فهرست منبع

完成灾害预警通知

chauncey 11 ماه پیش
والد
کامیت
e532d4a1f5

+ 4 - 1
src/views/disaster/WorkRecord.md

@@ -26,4 +26,7 @@
 ### 预防检查模块
 - [x] 任务管理静态页面完成
 - [x] 任务模板页面完成
-- [ ] 任务执行页面完成
+- [ ] 任务执行页面完成
+
+### 25/5/20
+### 完成灾害预警

+ 10 - 4
src/views/disaster/constant/index.ts

@@ -139,19 +139,19 @@ export const DISASTER_TYPE = [
 export const DISASTER_LEVEL = [
   {
     label: 'IV级/一般',
-    value: "1",
+    value: '1',
   },
   {
     label: 'III级/较重',
-    value: "2",
+    value: '2',
   },
   {
     label: 'II级/严重',
-    value: "3",
+    value: '3',
   },
   {
     label: 'I级/特别严重',
-    value: "4",
+    value: '4',
   },
 ];
 
@@ -159,3 +159,9 @@ export const DISASTER_LEVEL = [
 export const BIZ_TYPE = {
   ATTACHMENT: 'ATTACHMENT',
 };
+
+//管理权限
+export const DISASTER_PERMISSIONS = {
+  WARNING_INFO: 'disaster_business_module:warn_info',
+  DEFENSE_NOTICE: 'disaster_business_module:defense_notice',
+};

+ 26 - 5
src/views/disaster/disaster-warning/PageDefenseNotice.vue

@@ -11,6 +11,7 @@
             class="disaster-precaution__header--button"
             :icon="Plus"
             @click="handleCreateDefenseNotice"
+            v-if="defenseNoticePermissions"
             >创建灾害防御通知
           </el-button>
           <Search
@@ -48,7 +49,7 @@
           <template #action="scope">
             <ActionButton
               text="编辑"
-              v-if="scope.row.effectState === ACTIVE_STATUS.NOT_EFFECTIVE"
+              v-if="scope.row.effectState === ACTIVE_STATUS.NOT_EFFECTIVE && defenseNoticePermissions"
               @click="handleEditDefenseNotice(scope.row.id)"
             />
             <ActionButton text="查看" @click="handleViewDefenseNotice(scope.row.id)" />
@@ -57,7 +58,7 @@
               :popconfirm="{
                 title: '确定要发布?',
               }"
-              v-if="scope.row.effectState === ACTIVE_STATUS.NOT_EFFECTIVE"
+              v-if="scope.row.effectState === ACTIVE_STATUS.NOT_EFFECTIVE && defenseNoticePermissions"
               @confirm="handlePublishDefenseNotice(scope.row.id, scope.row.effectState)"
             />
             <ActionButton
@@ -65,7 +66,7 @@
               :popconfirm="{
                 title: '确定要撤回?',
               }"
-              v-else-if="scope.row.effectState === ACTIVE_STATUS.ACTIVE"
+              v-else-if="scope.row.effectState === ACTIVE_STATUS.ACTIVE && defenseNoticePermissions"
               @confirm="handlePublishDefenseNotice(scope.row.id, scope.row.effectState)"
             />
             <ActionButton
@@ -74,6 +75,7 @@
                 title: '确定要删除?',
               }"
               @confirm="handleDeleteDefenseNotice(scope.row.id)"
+              v-if="defenseNoticePermissions"
             />
           </template>
         </BasicTable>
@@ -92,13 +94,28 @@
   import { getDefenseNoticeList, deleteDefenseNoticeItem } from '@/api/disaster-warning';
   import type { DefenseNoticeListResponse, DefenseNoticeListQuery } from '@/types/disaster-warning';
   import type { QueryPageRequest } from '@/types/disaster';
-  import { ACTIVE_STATUS, ACTIVE_STATUS_COLOR, ACTIVE_STATUS_MAP } from '@/views/disaster/constant';
+  import {
+    ACTIVE_STATUS,
+    ACTIVE_STATUS_COLOR,
+    ACTIVE_STATUS_MAP,
+    DISASTER_PERMISSIONS,
+  } from '@/views/disaster/constant';
   import { PUSH_STATUS_MAP, PUSH_STATUS } from './src/constant';
-  import { DEFENSE_NOTICE_SEARCH_CONFIG, TABLE_OPTIONS, DEFENSE_NOTICE_TABLE_COLUMNS } from './src/config';
+  import {
+    DEFENSE_NOTICE_SEARCH_CONFIG,
+    TABLE_OPTIONS,
+    DEFENSE_NOTICE_TABLE_COLUMNS,
+    TABLE_HEIGHT_DEFAULT,
+    TABLE_HEIGHT_PREMISSION,
+  } from './src/config';
   import { formatDisasterLevel, formatDisasterType } from '@/views/disaster/utils/formatTable';
   import { useRouter } from 'vue-router';
   import { ElMessage } from 'element-plus';
   import { publishDefenseNoticeItem } from '@/api/disaster-warning';
+  import { useUserInfoHook } from '@/views/disaster/hooks/userInfo';
+
+  const { permissions } = useUserInfoHook();
+  const defenseNoticePermissions = ref<Boolean>(false);
 
   const tableData = ref<DefenseNoticeListResponse[]>([]);
   const router = useRouter();
@@ -177,6 +194,10 @@
   };
   onMounted(() => {
     getTableData();
+    defenseNoticePermissions.value = Boolean(
+      permissions.find((item: { code: string }) => item.code === DISASTER_PERMISSIONS.DEFENSE_NOTICE),
+    );
+    tableConfig.height = defenseNoticePermissions.value ? TABLE_HEIGHT_PREMISSION : TABLE_HEIGHT_DEFAULT;
   });
 </script>
 

+ 27 - 3
src/views/disaster/disaster-warning/PageWarningInfo.vue

@@ -11,6 +11,7 @@
             class="disaster-precaution__header--button"
             :icon="Plus"
             @click="handleCreateWarningInfo"
+            v-if="warningInfoPermissions"
           >
             创建灾害预警信息
           </el-button>
@@ -94,10 +95,22 @@
   import useTableConfig from '@/hooks/useTableConfigHook';
   import { getWarningInfoList } from '@/api/disaster-warning';
   import type { WarningInfoListResponse } from '@/types/disaster-warning';
-  import { ACTIVE_STATUS, ACTIVE_STATUS_COLOR, ACTIVE_STATUS_MAP } from '@/views/disaster/constant';
+  import {
+    ACTIVE_STATUS,
+    ACTIVE_STATUS_COLOR,
+    ACTIVE_STATUS_MAP,
+    DISASTER_PERMISSIONS,
+  } from '@/views/disaster/constant';
   import PlaceHolderWeather from './src/images/placeholder-weather@1X.png';
   import { PUSH_STATUS_MAP, PUSH_STATUS, WEATHER_DISASTER_ALERT_TYPE } from './src/constant';
-  import { WARNING_INFO_SEARCH_CONFIG, TABLE_OPTIONS, WARNING_INFO_TABLE_COLUMNS } from './src/config';
+  import {
+    WARNING_INFO_SEARCH_CONFIG,
+    TABLE_OPTIONS,
+    WARNING_INFO_TABLE_COLUMNS_DEFAULT,
+    WARNING_INFO_TABLE_COLUMNS_PERMISSION,
+    TABLE_HEIGHT_DEFAULT,
+    TABLE_HEIGHT_PREMISSION,
+  } from './src/config';
   import { useRouter } from 'vue-router';
   import type { QueryPageRequest } from '@/types/disaster';
   import type { WarningInfoListQuery } from '@/types/disaster-warning';
@@ -105,6 +118,9 @@
   import { formatDisasterType } from './src/util';
   import { deleteWarningInfoItem, publishWarningInfoItem } from '@/api/disaster-warning';
   import { ElMessage } from 'element-plus';
+  import { useUserInfoHook } from '@/views/disaster/hooks/userInfo';
+
+  const { permissions } = useUserInfoHook();
 
   const router = useRouter();
   const searchData = reactive({
@@ -146,7 +162,8 @@
     ElMessage.success('删除成功');
   };
   const tableData = ref<WarningInfoListResponse[]>([]);
-  const { tableConfig, pagination } = useTableConfig(WARNING_INFO_TABLE_COLUMNS, TABLE_OPTIONS);
+  const warningInfoPermissions = ref<Boolean>(false);
+  const { tableConfig, pagination } = useTableConfig(WARNING_INFO_TABLE_COLUMNS_DEFAULT, TABLE_OPTIONS);
   let wanrningInfoListQuery: QueryPageRequest<WarningInfoListQuery> = {
     pageNumber: pagination.pageNumber,
     pageSize: pagination.pageSize,
@@ -179,6 +196,13 @@
   };
   onMounted(() => {
     getTableData();
+    warningInfoPermissions.value = Boolean(
+      permissions.find((item: { code: string }) => item.code === DISASTER_PERMISSIONS.WARNING_INFO),
+    );
+    tableConfig.height = warningInfoPermissions.value ? TABLE_HEIGHT_PREMISSION : TABLE_HEIGHT_DEFAULT;
+    if (warningInfoPermissions.value) {
+      tableConfig.columns = WARNING_INFO_TABLE_COLUMNS_PERMISSION;
+    }
   });
 </script>
 

+ 12 - 2
src/views/disaster/disaster-warning/src/config/index.ts

@@ -1,5 +1,12 @@
 import { WARNING_INFO_SEARCH_CONFIG, DEFENSE_NOTICE_SEARCH_CONFIG } from './search';
-import { TABLE_OPTIONS, WARNING_INFO_TABLE_COLUMNS, DEFENSE_NOTICE_TABLE_COLUMNS } from './table';
+import {
+  TABLE_OPTIONS,
+  WARNING_INFO_TABLE_COLUMNS_DEFAULT,
+  WARNING_INFO_TABLE_COLUMNS_PERMISSION,
+  DEFENSE_NOTICE_TABLE_COLUMNS,
+  TABLE_HEIGHT_DEFAULT,
+  TABLE_HEIGHT_PREMISSION,
+} from './table';
 import {
   WARNING_INFO_FROM_CONFIG,
   DEFENSE_NOTICE_FROM_CONFIG,
@@ -12,8 +19,11 @@ import {
 export {
   WARNING_INFO_SEARCH_CONFIG,
   DEFENSE_NOTICE_SEARCH_CONFIG,
+  TABLE_HEIGHT_DEFAULT,
+  TABLE_HEIGHT_PREMISSION,
   TABLE_OPTIONS,
-  WARNING_INFO_TABLE_COLUMNS,
+  WARNING_INFO_TABLE_COLUMNS_DEFAULT,
+  WARNING_INFO_TABLE_COLUMNS_PERMISSION,
   DEFENSE_NOTICE_TABLE_COLUMNS,
   WARNING_INFO_FROM_CONFIG,
   DEFENSE_NOTICE_FROM_CONFIG,

+ 8 - 2
src/views/disaster/disaster-warning/src/config/table.ts

@@ -2,10 +2,12 @@
  * 灾害预警信息表格配置
  */
 import type { TableColumnProps } from '@/types/basic-table';
+
+export const TABLE_HEIGHT_DEFAULT = 'calc(70vh - 20px)';
+export const TABLE_HEIGHT_PREMISSION = 'calc(65vh - 20px)';
 // 基础表格样式配置
 export const TABLE_OPTIONS = {
   emptyText: '暂无数据',
-  height: '60vh',
   loading: true,
   stripe: true,
 };
@@ -54,7 +56,7 @@ const BASIC_TABLE_COLUMNS = {
 };
 
 // 预警信息表格列配置
-export const WARNING_INFO_TABLE_COLUMNS: TableColumnProps[] = [
+export const WARNING_INFO_TABLE_COLUMNS_DEFAULT: TableColumnProps[] = [
   {
     prop: 'warningIcon',
     label: '预警图标',
@@ -78,6 +80,10 @@ export const WARNING_INFO_TABLE_COLUMNS: TableColumnProps[] = [
   BASIC_TABLE_COLUMNS.ACTIVE_STATUS,
   BASIC_TABLE_COLUMNS.PUBLISH_TIME,
   BASIC_TABLE_COLUMNS.PUSH_STATUS,
+];
+
+export const WARNING_INFO_TABLE_COLUMNS_PERMISSION: TableColumnProps[] = [
+  ...WARNING_INFO_TABLE_COLUMNS_DEFAULT,
   BASIC_TABLE_COLUMNS.ACTION,
 ];
 

+ 2 - 0
src/views/disaster/hooks/userInfo.ts

@@ -9,7 +9,9 @@ const { getUserInfo } = storeToRefs(userStore);
 export const useUserInfoHook = () => {
   const userInfo = getUserInfo.value;
   const realname = userInfo.realname;
+  const permissions = userInfo.permissions;
   return {
     realname,
+    permissions,
   };
 };