Explorar el Código

完成损失上报接口对接

chauncey hace 11 meses
padre
commit
eb1e0e7598
Se han modificado 24 ficheros con 438 adiciones y 137 borrados
  1. 48 0
      mock/disaster-control/table.ts
  2. 13 0
      src/api/disaster-control/index.ts
  3. 13 4
      src/types/disaster-control/index.ts
  4. 10 1
      src/views/disaster/disaster-control/PageDisposalManagement.vue
  5. 8 0
      src/views/disaster/disaster-control/PageDisposalManagementItem.vue
  6. 10 1
      src/views/disaster/disaster-control/PageDisposalManagementTaskItem.vue
  7. 92 3
      src/views/disaster/disaster-control/src/components/EditDisposalManagementItem.vue
  8. 60 37
      src/views/disaster/disaster-control/src/components/LossRecord.vue
  9. 42 21
      src/views/disaster/disaster-control/src/components/ReportTask.vue
  10. 9 3
      src/views/disaster/disaster-control/src/components/ViewDisposalManagementItem.vue
  11. 34 2
      src/views/disaster/disaster-control/src/config/form.ts
  12. 4 0
      src/views/disaster/disaster-control/src/config/index.ts
  13. 28 22
      src/views/disaster/disaster-control/src/config/search.ts
  14. 1 1
      src/views/disaster/disaster-control/src/config/table.ts
  15. 44 8
      src/views/disaster/disaster-control/src/constant.ts
  16. 2 2
      src/views/disaster/disaster-control/src/util.ts
  17. 2 0
      src/views/disaster/disaster-precaution/PageTaskExecution.vue
  18. 2 0
      src/views/disaster/disaster-precaution/PageTaskManagement.vue
  19. 2 10
      src/views/disaster/disaster-precaution/src/config/form.ts
  20. 1 1
      src/views/disaster/disaster-warning/PageDefenseNoticeItem.vue
  21. 1 0
      src/views/disaster/disaster-warning/PageWarningInfoItem.vue
  22. 2 10
      src/views/disaster/disaster-warning/src/config/form.ts
  23. 0 11
      src/views/disaster/disaster-warning/src/util.ts
  24. 10 0
      src/views/disaster/utils/validateTime.ts

+ 48 - 0
mock/disaster-control/table.ts

@@ -5,26 +5,32 @@ const disposalManagementList = {
     {
     {
       id: 1,
       id: 1,
       taskName: '台风“贝碧嘉”灾害损失上报1',
       taskName: '台风“贝碧嘉”灾害损失上报1',
+      updatedAt: '2025-05-23 10:00',
     },
     },
     {
     {
       id: 2,
       id: 2,
       taskName: '台风“贝碧嘉”灾害损失上报2',
       taskName: '台风“贝碧嘉”灾害损失上报2',
+      updatedAt: '2025-05-24 10:00',
     },
     },
     {
     {
       id: 3,
       id: 3,
       taskName: '台风“贝碧嘉”灾害损失上报3',
       taskName: '台风“贝碧嘉”灾害损失上报3',
+      updatedAt: '2025-05-25 10:00',
     },
     },
     {
     {
       id: 4,
       id: 4,
       taskName: '台风“贝碧嘉”灾害损失上报4',
       taskName: '台风“贝碧嘉”灾害损失上报4',
+      updatedAt: '2025-05-26 10:00',
     },
     },
     {
     {
       id: 5,
       id: 5,
       taskName: '台风“贝碧嘉”灾害损失上报5',
       taskName: '台风“贝碧嘉”灾害损失上报5',
+      updatedAt: '2025-05-27 10:00',
     },
     },
     {
     {
       id: 6,
       id: 6,
       taskName: '台风“贝碧嘉”灾害损失上报6',
       taskName: '台风“贝碧嘉”灾害损失上报6',
+      updatedAt: '2025-05-28 10:00',
     },
     },
   ],
   ],
   totalRow: 6,
   totalRow: 6,
@@ -218,6 +224,40 @@ const disposalManagementItemList = [
     disasterReportTaskInfoList: [],
     disasterReportTaskInfoList: [],
   },
   },
 ];
 ];
+
+const lossReportReportTaskList = {
+  records: [
+    {
+      handleTaskId: 1,
+      handleTaskName: '台风“贝碧嘉”灾害损失上报1',
+      deptName: '广东省应急管理厅',
+      dueCompleteTime: '2025-05-23 10:00',
+      taskStage: 2,
+    },
+    {
+      handleTaskId: 2,
+      handleTaskName: '台风“贝碧嘉”灾害损失上报2',
+      deptName: '湖北省应急管理厅',
+      dueCompleteTime: '2025-05-23 10:00',
+      taskStage: 3,
+    },
+    {
+      handleTaskId: 3,
+      handleTaskName: '台风“贝碧嘉”灾害损失上报3',
+      deptName: '海南省应急管理厅',
+      dueCompleteTime: '2025-05-23 10:00',
+      taskStage: 4,
+    },
+    {
+      handleTaskId: 4,
+      handleTaskName: '台风“贝碧嘉”灾害损失上报4',
+      deptName: '湖南省应急管理厅',
+      dueCompleteTime: '2025-05-23 10:00',
+      taskStage: 5,
+    },
+  ],
+  totalRow: 4,
+};
 export default [
 export default [
   {
   {
     url: '/safety_mock_api/disasterHandle/queryDisasterHandleTaskPage',
     url: '/safety_mock_api/disasterHandle/queryDisasterHandleTaskPage',
@@ -235,4 +275,12 @@ export default [
       return resultSuccess(disposalManagementItemList);
       return resultSuccess(disposalManagementItemList);
     },
     },
   },
   },
+  {
+    url: '/safety_mock_api/disasterHandle/queryDisasterReportTaskPage',
+    timeout: 500,
+    method: 'post',
+    response: () => {
+      return resultSuccess(lossReportReportTaskList);
+    },
+  },
 ];
 ];

+ 13 - 0
src/api/disaster-control/index.ts

@@ -4,6 +4,8 @@ import type {
   DisposalManagementListQuery,
   DisposalManagementListQuery,
   DisposalManagementTableQuery,
   DisposalManagementTableQuery,
   DisposalManagementTableResponse,
   DisposalManagementTableResponse,
+  LossReportReportTaskQuery,
+  LossReportReportTaskResponse,
 } from '@/types/disaster-control';
 } from '@/types/disaster-control';
 import type { QueryPageResponse, QueryPageRequest } from '@/types/disaster';
 import type { QueryPageResponse, QueryPageRequest } from '@/types/disaster';
 /**
 /**
@@ -24,3 +26,14 @@ export const getDisasterControlTableData = (query: DisposalManagementTableQuery)
     data: query,
     data: query,
   });
   });
 };
 };
+
+/**
+ * 获取损失上报-上报任务数据
+ */
+export const getReportTaskList = (query: QueryPageRequest<LossReportReportTaskQuery>) => {
+  return http.request<QueryPageResponse<LossReportReportTaskResponse>>({
+    url: '/disasterHandle/queryDisasterReportTaskPage',
+    method: 'post',
+    data: query,
+  });
+};

+ 13 - 4
src/types/disaster-control/index.ts

@@ -14,21 +14,25 @@ export interface DisposalManagementTableQuery extends DisposalManagementListQuer
   status?: string;
   status?: string;
 }
 }
 
 
+interface BasicResponse {
+  deptName: string;
+  taskStage: number;
+  dueCompleteTime: string;
+}
+
 export interface DisposalManagementListResponse {
 export interface DisposalManagementListResponse {
   id: number;
   id: number;
   taskName: string;
   taskName: string;
+  updatedAt: string;
 }
 }
 
 
 export interface DisposalManagementCollapseListResponse<T> extends DisposalManagementListResponse {
 export interface DisposalManagementCollapseListResponse<T> extends DisposalManagementListResponse {
   tableData: T[];
   tableData: T[];
 }
 }
 
 
-export interface disasterReportTaskInfoListResponse {
+export interface disasterReportTaskInfoListResponse extends BasicResponse {
   id: number;
   id: number;
-  deptName: string;
-  dueCompleteTime: string;
   status: number;
   status: number;
-  taskStage: number;
   reportPrincipalInfoList: PersonGroupItem[];
   reportPrincipalInfoList: PersonGroupItem[];
 }
 }
 
 
@@ -37,6 +41,11 @@ export interface DisposalManagementTableResponse {
   disasterReportTaskInfoList: disasterReportTaskInfoListResponse[];
   disasterReportTaskInfoList: disasterReportTaskInfoListResponse[];
 }
 }
 
 
+export interface LossReportReportTaskResponse extends BasicResponse {
+  handleTaskId: number;
+  handleTaskName: string;
+}
+
 export interface DisposalManagementRuleForm {
 export interface DisposalManagementRuleForm {
   taskName: string;
   taskName: string;
   deptIds: number[];
   deptIds: number[];

+ 10 - 1
src/views/disaster/disaster-control/PageDisposalManagement.vue

@@ -115,6 +115,7 @@
                     <ActionButton
                     <ActionButton
                       text="编辑"
                       text="编辑"
                       v-if="scope.row.status === ACTIVE_STATUS.NOT_EFFECTIVE && disposalManagementPermissions"
                       v-if="scope.row.status === ACTIVE_STATUS.NOT_EFFECTIVE && disposalManagementPermissions"
+                      @click="handleEditDisposalManagement(scope.row.id)"
                     />
                     />
                     <ActionButton
                     <ActionButton
                       text="发布"
                       text="发布"
@@ -241,7 +242,6 @@
   const Task_RouterName = 'disaster-control-disposal-management-task-item';
   const Task_RouterName = 'disaster-control-disposal-management-task-item';
   const Table_RouterName = 'disaster-control-disposal-management-item';
   const Table_RouterName = 'disaster-control-disposal-management-item';
   const handleCreateDisposalManagement = (type: FORM_OPERATE_TYPE, taskName?: string) => {
   const handleCreateDisposalManagement = (type: FORM_OPERATE_TYPE, taskName?: string) => {
-    console.log(type);
     const routerName = type === FORM_OPERATE_TYPE.TASK_ITEM ? Task_RouterName : Table_RouterName;
     const routerName = type === FORM_OPERATE_TYPE.TASK_ITEM ? Task_RouterName : Table_RouterName;
     router.push({
     router.push({
       name: routerName,
       name: routerName,
@@ -251,6 +251,15 @@
       },
       },
     });
     });
   };
   };
+  const handleEditDisposalManagement = (id: number) => {
+    router.push({
+      name: Table_RouterName,
+      query: {
+        id,
+        operate: 'edit',
+      },
+    });
+  };
 
 
   const getDisposalData = async () => {
   const getDisposalData = async () => {
     collapseLoading.value = true;
     collapseLoading.value = true;

+ 8 - 0
src/views/disaster/disaster-control/PageDisposalManagementItem.vue

@@ -46,6 +46,14 @@
   const dynamicComponentRef = ref();
   const dynamicComponentRef = ref();
   const formLoading = ref(false);
   const formLoading = ref(false);
   const submit = async () => {
   const submit = async () => {
+    if (!dynamicComponentRef.value) return;
+    const res = await dynamicComponentRef.value.handleValidate();
+    if (!res) return;
+    formLoading.value = true;
+    const formData = dynamicComponentRef.value.getFormData();
+    console.log(formData);
+    ElMessage.success('提交成功');
+    formLoading.value = false;
   };
   };
 </script>
 </script>
 
 

+ 10 - 1
src/views/disaster/disaster-control/PageDisposalManagementTaskItem.vue

@@ -41,7 +41,16 @@
   });
   });
   const dynamicComponentRef = ref();
   const dynamicComponentRef = ref();
   const formLoading = ref(false);
   const formLoading = ref(false);
-  const submit = async () => {};
+  const submit = async () => {
+    if (!dynamicComponentRef.value) return;
+    const res = await dynamicComponentRef.value.handleValidate();
+    if (!res) return;
+    formLoading.value = true;
+    const formData = dynamicComponentRef.value.getFormData();
+    console.log(formData);
+    ElMessage.success('提交成功');
+    formLoading.value = false;
+  };
 </script>
 </script>
 
 
 <style lang="scss" scoped>
 <style lang="scss" scoped>

+ 92 - 3
src/views/disaster/disaster-control/src/components/EditDisposalManagementItem.vue

@@ -1,7 +1,96 @@
 <template>
 <template>
-  <div> this is createDisposalManagementItem page </div>
+  <div class="info-container">
+    <BasicForm ref="basicFormRef" :formData="ruleFormData" :formRules="formRules" :formConfig="ruleFormConfig">
+      <template #deptIds>
+        <el-select
+          v-model="ruleFormData.deptIds"
+          multiple
+          placeholder="请选择上报部门"
+          filterable
+          class="custom-select"
+        >
+          <el-option v-for="item in firstLevelDepts" :key="item.id" :label="item.deptName" :value="item.id" />
+        </el-select>
+      </template>
+      <template #userGroupList>
+        <GroupSelect v-model="ruleFormData.userGroupList" :groupOptions="groupOptions" />
+      </template>
+      <template #isPush>
+        <el-radio-group v-model="ruleFormData.isPush">
+          <el-radio :label="true">是</el-radio>
+          <el-radio :label="false">否</el-radio>
+        </el-radio-group>
+      </template>
+    </BasicForm>
+  </div>
 </template>
 </template>
 
 
-<script lang="ts" setup></script>
+<script setup lang="ts">
+  import BasicForm from '@/components/BasicForm.vue';
+  import GroupSelect from '@/views/disaster/components/GroupSelect.vue';
+  import { useFormConfigHook } from '@/hooks/useFormConfigHook';
+  import {
+    DISPOSAL_MANAGEMENT_ITEM_FROM_CONFIG_EDIT,
+    DISPOSAL_MANAGEMENT_TASK_FROM_DATA,
+    DISPOSAL_MANAGEMENT_ITEM_FROM_RULES_EDIT,
+  } from '../config';
+  import { onMounted, ref } from 'vue';
+  import { useUserInfoHook } from '@/views/disaster/hooks/userInfo';
+  import type { DisposalManagementRuleForm } from '@/types/disaster-control';
+  import type { DeptTree } from '@/types/dept/type';
+  import type { UserGroupOption } from '@/types/person-group/type';
+  import { formatDeptTree } from '@/views/disaster/utils/formatDeptTree';
+  import { getAllDepartments } from '@/api/auth/dept';
+  import { getAllUserGroup } from '@/api/system/person-group';
+  import { useRoute } from 'vue-router';
 
 
-<style lang="scss" scoped></style>
+  const { realname } = useUserInfoHook();
+  const route = useRoute();
+  const taskName = route.query.taskName as string;
+  const basicFormRef = ref<InstanceType<typeof BasicForm>>();
+
+  const firstLevelDepts = ref<DeptTree[]>([]);
+  const groupOptions = ref<UserGroupOption[]>([]);
+
+  const { ruleFormConfig, ruleFormData, formRules, cloneRuleFormData, beforeRouteLeave } =
+    useFormConfigHook<DisposalManagementRuleForm>(
+      DISPOSAL_MANAGEMENT_ITEM_FROM_CONFIG_EDIT,
+      DISPOSAL_MANAGEMENT_TASK_FROM_DATA,
+      DISPOSAL_MANAGEMENT_ITEM_FROM_RULES_EDIT,
+    );
+
+  const handleValidate = async () => {
+    if (!basicFormRef.value) return;
+    const parentValidateResult = await basicFormRef.value.validateForm();
+    return parentValidateResult;
+  };
+  const getFormData = () => {
+    cloneRuleFormData();
+    return ruleFormData;
+  };
+  const getDeptList = async () => {
+    const res = await getAllDepartments();
+    firstLevelDepts.value = formatDeptTree(res);
+  };
+  const getUserGroupList = async () => {
+    const res = await getAllUserGroup();
+    groupOptions.value = res.groupVOList;
+  };
+  defineExpose({
+    handleValidate,
+    getFormData,
+  });
+  onMounted(() => {
+    ruleFormData.realname = realname;
+    ruleFormData.taskName = taskName;
+    getDeptList();
+    getUserGroupList();
+    cloneRuleFormData();
+    beforeRouteLeave();
+  });
+</script>
+
+<style scoped lang="scss">
+  @use '@/views/disaster/style/info-container.scss' as *;
+  @use '../style/item-common.scss' as *;
+</style>

+ 60 - 37
src/views/disaster/disaster-control/src/components/LossRecord.vue

@@ -1,17 +1,4 @@
 <template>
 <template>
-  <div>
-
-  </div>
-</template>
-
-<script lang="ts" setup>
-
-</script>
-
-<style lang="scss" scoped>
-
-</style>
-<!-- <template>
   <div class="disaster-precaution">
   <div class="disaster-precaution">
     <header class="disaster-precaution__header">
     <header class="disaster-precaution__header">
       <el-button type="primary" class="disaster-precaution__header--button" :icon="Plus"> 创建灾害损失记录 </el-button>
       <el-button type="primary" class="disaster-precaution__header--button" :icon="Plus"> 创建灾害损失记录 </el-button>
@@ -20,6 +7,17 @@
         :searchData="searchData"
         :searchData="searchData"
         @update:searchData="handleSearch"
         @update:searchData="handleSearch"
       >
       >
+        <template #handleDeptIds>
+          <el-select
+            v-model="searchData.handleDeptIds"
+            multiple
+            placeholder="请选择上报单位"
+            filterable
+            class="custom-select"
+          >
+            <el-option v-for="item in firstLevelDepts" :key="item.id" :label="item.deptName" :value="item.id" />
+          </el-select>
+        </template>
       </Search>
       </Search>
     </header>
     </header>
     <div class="collapse-container" v-loading="collapseLoading">
     <div class="collapse-container" v-loading="collapseLoading">
@@ -29,8 +27,13 @@
       </div>
       </div>
       <template v-else>
       <template v-else>
         <CollapseItem v-for="item in collapseList" :key="item.id" :name="item.taskName" :defaultOpen="item.id === 1">
         <CollapseItem v-for="item in collapseList" :key="item.id" :name="item.taskName" :defaultOpen="item.id === 1">
+          <template #viewOperation>
+            <div class="update-time-container">
+              <span>发布时间:{{ item.updatedAt }}</span>
+            </div>
+          </template>
           <template #main-table>
           <template #main-table>
-            <BasicTable :tableData="item.tableData" :tableConfig="tableConfig" />
+            <!-- <BasicTable :tableData="item.tableData" :tableConfig="tableConfig" /> -->
           </template>
           </template>
         </CollapseItem>
         </CollapseItem>
       </template>
       </template>
@@ -55,17 +58,25 @@
   import { Plus } from '@element-plus/icons-vue';
   import { Plus } from '@element-plus/icons-vue';
   import Search from '@/views/disaster/components/Search.vue';
   import Search from '@/views/disaster/components/Search.vue';
   import BasicTable from '@/components/BasicTable.vue';
   import BasicTable from '@/components/BasicTable.vue';
+  import { getAllDepartments } from '@/api/auth/dept';
   import CollapseItem from './CollapseItem.vue';
   import CollapseItem from './CollapseItem.vue';
   import { DEFAULT_PAGE_SIZE, DISASTER_CONTROL_PAGE_SIZE_CONFIG } from '../constant';
   import { DEFAULT_PAGE_SIZE, DISASTER_CONTROL_PAGE_SIZE_CONFIG } from '../constant';
-  import type { DisposalManagementListResponse, LossRecordTableResponse } from '@/types/disaster-control';
+  import type {
+    DisposalManagementCollapseListResponse,
+    DisposalManagementTableResponse,
+  } from '@/types/disaster-control';
+  import { getDisasterControlCollapseData } from '@/api/disaster-control';
   import {
   import {
     LOSS_RECORD_LOSS_RECORD_SEARCH_CONFIG,
     LOSS_RECORD_LOSS_RECORD_SEARCH_CONFIG,
     LOSS_RECORD_TABLE_COLUMNS,
     LOSS_RECORD_TABLE_COLUMNS,
     DISPOSAL_MANAGEMENT_TABLE_OPTIONS,
     DISPOSAL_MANAGEMENT_TABLE_OPTIONS,
   } from '../config';
   } from '../config';
   import Empty from 'assets/images/empty@1X.png';
   import Empty from 'assets/images/empty@1X.png';
-  import { getLossRecordCollapseData, getLossRecordTableData } from '@/api/disaster-control';
   import useTableConfig from '@/hooks/useTableConfigHook';
   import useTableConfig from '@/hooks/useTableConfigHook';
+  import { formatDeptTree } from '@/views/disaster/utils/formatDeptTree';
+  import type { DeptTree } from '@/types/dept/type';
+
+  const firstLevelDepts = ref<DeptTree[]>([]);
 
 
   const currentPage = ref(1);
   const currentPage = ref(1);
   const pageSize = ref(DEFAULT_PAGE_SIZE);
   const pageSize = ref(DEFAULT_PAGE_SIZE);
@@ -73,42 +84,47 @@
   const collapseLoading = ref(false);
   const collapseLoading = ref(false);
   const { tableConfig } = useTableConfig(LOSS_RECORD_TABLE_COLUMNS, DISPOSAL_MANAGEMENT_TABLE_OPTIONS, false);
   const { tableConfig } = useTableConfig(LOSS_RECORD_TABLE_COLUMNS, DISPOSAL_MANAGEMENT_TABLE_OPTIONS, false);
   const searchData = reactive({
   const searchData = reactive({
-    department: '',
-    progress: '',
+    handleDeptIds: '',
+    fixStatus: '',
   });
   });
   const handleSearch = () => {
   const handleSearch = () => {
     console.log(searchData);
     console.log(searchData);
   };
   };
 
 
   const taskIds = ref<number[]>([]);
   const taskIds = ref<number[]>([]);
-  const collapseList = ref<DisposalManagementListResponse<LossRecordTableResponse>[]>([]);
+  const collapseList = ref<DisposalManagementCollapseListResponse<DisposalManagementTableResponse>[]>([]);
   const getDisposalData = async () => {
   const getDisposalData = async () => {
     collapseLoading.value = true;
     collapseLoading.value = true;
-    const res = await getLossRecordCollapseData({
+    const res = await getDisasterControlCollapseData({
       pageNumber: currentPage.value,
       pageNumber: currentPage.value,
       pageSize: pageSize.value,
       pageSize: pageSize.value,
       queryParam: {},
       queryParam: {},
     });
     });
-    collapseList.value = res.records;
-    collapseList.value.forEach((item) => {
-      item.tableData = [];
-    });
+    collapseList.value = res.records.map((item) => ({
+      ...item,
+      tableData: [
+        {
+          handleTaskId: item.id,
+          disasterReportTaskInfoList: [],
+        },
+      ],
+    }));
     taskIds.value = res.records.map((item) => item.id);
     taskIds.value = res.records.map((item) => item.id);
     total.value = res.totalRow;
     total.value = res.totalRow;
     collapseLoading.value = false;
     collapseLoading.value = false;
   };
   };
 
 
-  const getDisposalTableData = async () => {
-    tableConfig.loading = true;
-    const res = await getLossRecordTableData({
-      handleTaskIds: taskIds.value,
-      ...searchData,
-    });
-    collapseList.value.forEach((item) => {
-      item.tableData = res;
-    });
-    tableConfig.loading = false;
-  };
+  // const getDisposalTableData = async () => {
+  //   tableConfig.loading = true;
+  //   const res = await getLossRecordTableData({
+  //     handleTaskIds: taskIds.value,
+  //     ...searchData,
+  //   });
+  //   collapseList.value.forEach((item) => {
+  //     item.tableData = res;
+  //   });
+  //   tableConfig.loading = false;
+  // };
   const handleSizeChange = (size: number) => {
   const handleSizeChange = (size: number) => {
     pageSize.value = size;
     pageSize.value = size;
   };
   };
@@ -118,8 +134,10 @@
   };
   };
 
 
   onMounted(async () => {
   onMounted(async () => {
+    const result = await getAllDepartments();
+    firstLevelDepts.value = formatDeptTree(result);
     await getDisposalData();
     await getDisposalData();
-    await getDisposalTableData();
+    // await getDisposalTableData();
   });
   });
 </script>
 </script>
 
 
@@ -131,4 +149,9 @@
     height: $collapse-container-height;
     height: $collapse-container-height;
     max-height: $collapse-container-height;
     max-height: $collapse-container-height;
   }
   }
-</style> -->
+  .update-time-container {
+    font-size: 14cpx;
+    color: #999;
+    font-weight: 400;
+  }
+</style>

+ 42 - 21
src/views/disaster/disaster-control/src/components/ReportTask.vue

@@ -1,17 +1,4 @@
 <template>
 <template>
-  <div>
-
-  </div>
-</template>
-
-<script lang="ts" setup>
-
-</script>
-
-<style lang="scss" scoped>
-
-</style>
-<!-- <template>
   <div class="disaster-precaution">
   <div class="disaster-precaution">
     <header class="disaster-precaution__header">
     <header class="disaster-precaution__header">
       <Search
       <Search
@@ -21,10 +8,34 @@
       >
       >
       </Search>
       </Search>
     </header>
     </header>
-    <BasicTable :tableConfig="tableConfig" :tableData="tableData" :pageSizeConfig="DISASTER_CONTROL_PAGE_SIZE_CONFIG">
+    <BasicTable
+      :tableConfig="tableConfig"
+      :tableData="tableData"
+      @size-change="handleSizeChange"
+      @current-change="handleCurrentChange"
+    >
       <template #taskStage="scope">
       <template #taskStage="scope">
         <span>{{ getTaskStage(scope.row.taskStage) }}</span>
         <span>{{ getTaskStage(scope.row.taskStage) }}</span>
       </template>
       </template>
+      <template #action="scope">
+        <!-- 待上报任务阶段 -->
+        <div class="action-container" v-if="scope.row.taskStage === TASK_STAGE.TO_BE_REPORTED">
+          <ActionButton text="去上报" />
+          <ActionButton text="添加上报人" />
+        </div>
+        <!-- 已上报任务阶段 -->
+        <div
+          class="action-container"
+          v-else-if="
+            scope.row.taskStage === TASK_STAGE.REPORTED_LOSS || scope.row.taskStage === TASK_STAGE.REPORTED_NO_LOSS
+          "
+        >
+          <ActionButton text="查看记录" />
+        </div>
+        <div class="action-container" v-else-if="scope.row.taskStage === TASK_STAGE.OVERDUE">
+          <span>--</span>
+        </div>
+      </template>
     </BasicTable>
     </BasicTable>
   </div>
   </div>
 </template>
 </template>
@@ -33,27 +44,27 @@
   import { ref, reactive, onMounted } from 'vue';
   import { ref, reactive, onMounted } from 'vue';
   import Search from '@/views/disaster/components/Search.vue';
   import Search from '@/views/disaster/components/Search.vue';
   import BasicTable from '@/components/BasicTable.vue';
   import BasicTable from '@/components/BasicTable.vue';
+  import ActionButton from '@/components/ActionButton.vue';
   import {
   import {
     LOSS_REPORT_REPORT_TASK_SEARCH_CONFIG,
     LOSS_REPORT_REPORT_TASK_SEARCH_CONFIG,
     LOSS_REPORT_REPORT_TASK_TABLE_OPTIONS,
     LOSS_REPORT_REPORT_TASK_TABLE_OPTIONS,
     LOSS_REPORT_REPORT_TASK_TABLE_COLUMNS,
     LOSS_REPORT_REPORT_TASK_TABLE_COLUMNS,
   } from '../config';
   } from '../config';
   import useTableConfig from '@/hooks/useTableConfigHook';
   import useTableConfig from '@/hooks/useTableConfigHook';
-  import { DEFAULT_PAGE_SIZE, DISASTER_CONTROL_PAGE_SIZE_CONFIG } from '../constant';
-  import { getLossReportReportTaskData } from '@/api/disaster-control';
-  import type { LossReportReportTaskQuery, DisposalManagementTableResponse } from '@/types/disaster-control';
+  import { getReportTaskList } from '@/api/disaster-control';
+  import type { LossReportReportTaskQuery, LossReportReportTaskResponse } from '@/types/disaster-control';
   import type { QueryPageRequest } from '@/types/disaster';
   import type { QueryPageRequest } from '@/types/disaster';
+  import { TASK_STAGE } from '../constant';
   import { getTaskStage } from '../util';
   import { getTaskStage } from '../util';
 
 
   const searchData = reactive({
   const searchData = reactive({
     taskStage: '',
     taskStage: '',
   });
   });
-  const tableData = ref<DisposalManagementTableResponse[]>([]);
+  const tableData = ref<LossReportReportTaskResponse[]>([]);
   const { tableConfig, pagination } = useTableConfig(
   const { tableConfig, pagination } = useTableConfig(
     LOSS_REPORT_REPORT_TASK_TABLE_COLUMNS,
     LOSS_REPORT_REPORT_TASK_TABLE_COLUMNS,
     LOSS_REPORT_REPORT_TASK_TABLE_OPTIONS,
     LOSS_REPORT_REPORT_TASK_TABLE_OPTIONS,
   );
   );
-  pagination.pageSize = DEFAULT_PAGE_SIZE;
   let ReportTaskListQuery: QueryPageRequest<LossReportReportTaskQuery> = {
   let ReportTaskListQuery: QueryPageRequest<LossReportReportTaskQuery> = {
     pageNumber: pagination.pageNumber,
     pageNumber: pagination.pageNumber,
     pageSize: pagination.pageSize,
     pageSize: pagination.pageSize,
@@ -61,11 +72,21 @@
   };
   };
   const getTableData = async () => {
   const getTableData = async () => {
     tableConfig.loading = true;
     tableConfig.loading = true;
-    const res = await getLossReportReportTaskData(ReportTaskListQuery);
+    const res = await getReportTaskList(ReportTaskListQuery);
     tableData.value = res.records;
     tableData.value = res.records;
     pagination.total = res.totalRow;
     pagination.total = res.totalRow;
     tableConfig.loading = false;
     tableConfig.loading = false;
   };
   };
+  const handleSizeChange = (size: number) => {
+    pagination.pageSize = size;
+    ReportTaskListQuery.pageSize = size;
+    getTableData();
+  };
+  const handleCurrentChange = (current: number) => {
+    pagination.pageNumber = current;
+    ReportTaskListQuery.pageNumber = current;
+    getTableData();
+  };
   const handleSearch = () => {
   const handleSearch = () => {
     if (searchData.taskStage !== '') {
     if (searchData.taskStage !== '') {
       ReportTaskListQuery.queryParam.taskStage = searchData.taskStage;
       ReportTaskListQuery.queryParam.taskStage = searchData.taskStage;
@@ -79,4 +100,4 @@
 
 
 <style lang="scss" scoped>
 <style lang="scss" scoped>
   @use '@/views/disaster/style/disaster.scss' as *;
   @use '@/views/disaster/style/disaster.scss' as *;
-</style> -->
+</style>

+ 9 - 3
src/views/disaster/disaster-control/src/components/ViewDisposalManagementItem.vue

@@ -1,7 +1,13 @@
 <template>
 <template>
-  <div> this is createDisposalManagementItem page </div>
+  <div>
+    this is view disposal management item page
+  </div>
 </template>
 </template>
 
 
-<script lang="ts" setup></script>
+<script lang="ts" setup>
 
 
-<style lang="scss" scoped></style>
+</script>
+
+<style lang="scss" scoped>
+
+</style>

+ 34 - 2
src/views/disaster/disaster-control/src/config/form.ts

@@ -2,6 +2,7 @@
  * 灾害预警信息表单配置
  * 灾害预警信息表单配置
  */
  */
 import type { FormConfig } from '@/types/basic-form';
 import type { FormConfig } from '@/types/basic-form';
+import { validateFormTime } from '@/views/disaster/utils/validateTime';
 // 通用表单信息
 // 通用表单信息
 const BASIC_FROM_CONFIG = {};
 const BASIC_FROM_CONFIG = {};
 
 
@@ -89,6 +90,28 @@ export const DISPOSAL_MANAGEMENT_ITEM_FROM_CONFIG_CREATE: FormConfig[] = [
   ...DISPOSAL_MANAGEMENT_BASIC_FROM_CONFIG,
   ...DISPOSAL_MANAGEMENT_BASIC_FROM_CONFIG,
 ];
 ];
 
 
+// 处置管理表单信息(列表项)
+export const DISPOSAL_MANAGEMENT_ITEM_FROM_CONFIG_EDIT: FormConfig[] = [
+  {
+    label: '任务名称',
+    prop: 'taskName',
+    component: 'ElInput',
+    componentProps: {
+      placeholder: '请输入任务名称',
+      disabled: true,
+    },
+  },
+  {
+    label: '上报部门',
+    prop: 'deptIds',
+    component: 'ElInput',
+    componentProps: {
+      disabled: true,
+    },
+  },
+  ...DISPOSAL_MANAGEMENT_BASIC_FROM_CONFIG,
+];
+
 // 通用表单数据
 // 通用表单数据
 const BASIC_FROM_DATA = {};
 const BASIC_FROM_DATA = {};
 const DISPOSAL_MANAGEMENT_BASIC_FROM_DATA = {
 const DISPOSAL_MANAGEMENT_BASIC_FROM_DATA = {
@@ -109,8 +132,10 @@ const BASIC_FROM_RULES = {};
 
 
 // 处置管理通用表单规则
 // 处置管理通用表单规则
 const DISPOSAL_MANAGEMENT_BASIC_FROM_RULES = {
 const DISPOSAL_MANAGEMENT_BASIC_FROM_RULES = {
-  deptIds: [{ required: true, message: '请选择上报部门', trigger: 'change' }],
-  dueCompleteTime: [{ required: true, message: '请选择应完成上报时间', trigger: 'change' }],
+  dueCompleteTime: [
+    { required: true, message: '请选择应完成上报时间', trigger: 'change' },
+    { validator: validateFormTime, trigger: 'change' },
+  ],
   userGroupList: [{ required: true, message: '请选择上报人员', trigger: 'change' }],
   userGroupList: [{ required: true, message: '请选择上报人员', trigger: 'change' }],
   isPush: [{ required: true, message: '请选择是否推送', trigger: 'change' }],
   isPush: [{ required: true, message: '请选择是否推送', trigger: 'change' }],
 };
 };
@@ -118,10 +143,17 @@ const DISPOSAL_MANAGEMENT_BASIC_FROM_RULES = {
 // 处置管理任务项表单规则(任务项)
 // 处置管理任务项表单规则(任务项)
 export const DISPOSAL_MANAGEMENT_TASK_FROM_RULES = {
 export const DISPOSAL_MANAGEMENT_TASK_FROM_RULES = {
   taskName: [{ required: true, message: '请输入任务名称', trigger: 'blur' }],
   taskName: [{ required: true, message: '请输入任务名称', trigger: 'blur' }],
+  deptIds: [{ required: true, message: '请选择上报部门', trigger: 'change' }],
   ...DISPOSAL_MANAGEMENT_BASIC_FROM_RULES,
   ...DISPOSAL_MANAGEMENT_BASIC_FROM_RULES,
 };
 };
 
 
 // 处置管理列表项表单规则(列表项)
 // 处置管理列表项表单规则(列表项)
 export const DISPOSAL_MANAGEMENT_ITEM_FROM_RULES_CREATE = {
 export const DISPOSAL_MANAGEMENT_ITEM_FROM_RULES_CREATE = {
+  deptIds: [{ required: true, message: '请选择上报部门', trigger: 'change' }],
+  ...DISPOSAL_MANAGEMENT_BASIC_FROM_RULES,
+};
+
+// 处置管理列表项表单规则(列表项)
+export const DISPOSAL_MANAGEMENT_ITEM_FROM_RULES_EDIT = {
   ...DISPOSAL_MANAGEMENT_BASIC_FROM_RULES,
   ...DISPOSAL_MANAGEMENT_BASIC_FROM_RULES,
 };
 };

+ 4 - 0
src/views/disaster/disaster-control/src/config/index.ts

@@ -16,6 +16,8 @@ import {
   DISPOSAL_MANAGEMENT_TASK_FROM_RULES,
   DISPOSAL_MANAGEMENT_TASK_FROM_RULES,
   DISPOSAL_MANAGEMENT_ITEM_FROM_CONFIG_CREATE,
   DISPOSAL_MANAGEMENT_ITEM_FROM_CONFIG_CREATE,
   DISPOSAL_MANAGEMENT_ITEM_FROM_RULES_CREATE,
   DISPOSAL_MANAGEMENT_ITEM_FROM_RULES_CREATE,
+  DISPOSAL_MANAGEMENT_ITEM_FROM_CONFIG_EDIT,
+  DISPOSAL_MANAGEMENT_ITEM_FROM_RULES_EDIT,
 } from './form';
 } from './form';
 
 
 export {
 export {
@@ -32,4 +34,6 @@ export {
   DISPOSAL_MANAGEMENT_TASK_FROM_RULES,
   DISPOSAL_MANAGEMENT_TASK_FROM_RULES,
   DISPOSAL_MANAGEMENT_ITEM_FROM_CONFIG_CREATE,
   DISPOSAL_MANAGEMENT_ITEM_FROM_CONFIG_CREATE,
   DISPOSAL_MANAGEMENT_ITEM_FROM_RULES_CREATE,
   DISPOSAL_MANAGEMENT_ITEM_FROM_RULES_CREATE,
+  DISPOSAL_MANAGEMENT_ITEM_FROM_CONFIG_EDIT,
+  DISPOSAL_MANAGEMENT_ITEM_FROM_RULES_EDIT,
 };
 };

+ 28 - 22
src/views/disaster/disaster-control/src/config/search.ts

@@ -3,20 +3,14 @@
  */
  */
 import type { SearchConfig } from '@/views/disaster/types';
 import type { SearchConfig } from '@/views/disaster/types';
 import { ACTIVE_STATUS_OPTIONS } from '@/views/disaster/constant';
 import { ACTIVE_STATUS_OPTIONS } from '@/views/disaster/constant';
-import { TASK_STAGE_OPTIONS } from '../constant';
+import {
+  TASK_STAGE_OPTIONS_DISPOSAL_MANAGEMENT,
+  TASK_STAGE_OPTIONS_REPORT_TASK,
+  FIX_STATUS_OPTIONS,
+} from '../constant';
 
 
 // 通用搜索配置
 // 通用搜索配置
-const BASIC_SEARCH_CONFIG = {
-  TASK_STAGE: {
-    label: '任务阶段',
-    prop: 'taskStage',
-    component: 'ElSelect',
-    selectOptions: TASK_STAGE_OPTIONS,
-    componentProps: {
-      placeholder: '请选择任务阶段',
-    },
-  },
-};
+const BASIC_SEARCH_CONFIG = {};
 
 
 // 灾害处理搜索配置
 // 灾害处理搜索配置
 export const DISPOSAL_MANAGEMENT_SEARCH_CONFIG: SearchConfig[] = [
 export const DISPOSAL_MANAGEMENT_SEARCH_CONFIG: SearchConfig[] = [
@@ -34,30 +28,42 @@ export const DISPOSAL_MANAGEMENT_SEARCH_CONFIG: SearchConfig[] = [
       placeholder: '请选择生效状态',
       placeholder: '请选择生效状态',
     },
     },
   },
   },
-  BASIC_SEARCH_CONFIG.TASK_STAGE,
+  {
+    label: '任务阶段',
+    prop: 'taskStage',
+    component: 'ElSelect',
+    selectOptions: TASK_STAGE_OPTIONS_DISPOSAL_MANAGEMENT,
+    componentProps: {
+      placeholder: '请选择任务阶段',
+    },
+  },
 ];
 ];
 
 
 // 损失上报-上报任务搜索配置
 // 损失上报-上报任务搜索配置
 export const LOSS_REPORT_REPORT_TASK_SEARCH_CONFIG: SearchConfig[] = [
 export const LOSS_REPORT_REPORT_TASK_SEARCH_CONFIG: SearchConfig[] = [
-  BASIC_SEARCH_CONFIG.TASK_STAGE,
+  {
+    label: '任务阶段',
+    prop: 'taskStage',
+    component: 'ElSelect',
+    selectOptions: TASK_STAGE_OPTIONS_REPORT_TASK,
+    componentProps: {
+      placeholder: '请选择任务阶段',
+    },
+  },
 ];
 ];
 
 
 // 损失记录-损失记录搜索配置
 // 损失记录-损失记录搜索配置
 export const LOSS_RECORD_LOSS_RECORD_SEARCH_CONFIG: SearchConfig[] = [
 export const LOSS_RECORD_LOSS_RECORD_SEARCH_CONFIG: SearchConfig[] = [
   {
   {
     label: '整改部门',
     label: '整改部门',
-    prop: 'department',
-    component: 'ElSelect',
-    selectOptions: [],
-    componentProps: {
-      placeholder: '请选择整改部门',
-    },
+    prop: 'handleDeptIds',
+    slot: 'handleDeptIds',
   },
   },
   {
   {
     label: '整改进度',
     label: '整改进度',
-    prop: 'progress',
+    prop: 'fixStatus',
     component: 'ElSelect',
     component: 'ElSelect',
-    selectOptions: [],
+    selectOptions: FIX_STATUS_OPTIONS,
     componentProps: {
     componentProps: {
       placeholder: '请选择整改进度',
       placeholder: '请选择整改进度',
     },
     },

+ 1 - 1
src/views/disaster/disaster-control/src/config/table.ts

@@ -85,7 +85,7 @@ export const LOSS_REPORT_REPORT_TASK_TABLE_COLUMNS: TableColumnProps[] = [
   BASIC_TABLE_COLUMNS.INDEX,
   BASIC_TABLE_COLUMNS.INDEX,
   {
   {
     label: '任务名称',
     label: '任务名称',
-    prop: 'taskName',
+    prop: 'handleTaskName',
     align: 'center',
     align: 'center',
   },
   },
   BASIC_TABLE_COLUMNS.DEPT_NAME,
   BASIC_TABLE_COLUMNS.DEPT_NAME,

+ 44 - 8
src/views/disaster/disaster-control/src/constant.ts

@@ -11,11 +11,15 @@ export enum TASK_STAGE {
   OVERDUE,
   OVERDUE,
 }
 }
 
 
-export const TASK_STAGE_OPTIONS = [
-  {
-    label: '待发布',
-    value: TASK_STAGE.TO_BE_RELEASED,
-  },
+export enum FIX_STATUS {
+  TO_BE_RECTIFIED = 1,
+  RESPONDED,
+  UPDATED,
+  COMPLETED,
+  TEMPORARY_CLOSED,
+}
+
+const TASK_STAGE_OPTIONS_BASIC = [
   {
   {
     label: '待上报',
     label: '待上报',
     value: TASK_STAGE.TO_BE_REPORTED,
     value: TASK_STAGE.TO_BE_REPORTED,
@@ -31,7 +35,40 @@ export const TASK_STAGE_OPTIONS = [
   {
   {
     label: '超期未上报',
     label: '超期未上报',
     value: TASK_STAGE.OVERDUE,
     value: TASK_STAGE.OVERDUE,
-  }
+  },
+];
+
+export const TASK_STAGE_OPTIONS_DISPOSAL_MANAGEMENT = [
+  {
+    label: '待发布',
+    value: TASK_STAGE.TO_BE_RELEASED,
+  },
+  ...TASK_STAGE_OPTIONS_BASIC,
+];
+
+export const TASK_STAGE_OPTIONS_REPORT_TASK = [...TASK_STAGE_OPTIONS_BASIC];
+
+export const FIX_STATUS_OPTIONS = [
+  {
+    label: '待整改',
+    value: FIX_STATUS.TO_BE_RECTIFIED,
+  },
+  {
+    label: '已响应',
+    value: FIX_STATUS.RESPONDED,
+  },
+  {
+    label: '已更新',
+    value: FIX_STATUS.UPDATED,
+  },
+  {
+    label: '已完成',
+    value: FIX_STATUS.COMPLETED,
+  },
+  {
+    label: '暂时关闭',
+    value: FIX_STATUS.TEMPORARY_CLOSED,
+  },
 ];
 ];
 
 
 export const DEFAULT_PAGE_SIZE = 10;
 export const DEFAULT_PAGE_SIZE = 10;
@@ -46,11 +83,10 @@ export const LOSS_REPORT_TABS = [
     label: '损失记录',
     label: '损失记录',
     value: 'lossRecord',
     value: 'lossRecord',
   },
   },
-]; 
+];
 
 
 // 表单操作项
 // 表单操作项
 export enum FORM_OPERATE_TYPE {
 export enum FORM_OPERATE_TYPE {
   TABLE_ITEM = 'tableItem',
   TABLE_ITEM = 'tableItem',
   TASK_ITEM = 'taskItem',
   TASK_ITEM = 'taskItem',
 }
 }
-

+ 2 - 2
src/views/disaster/disaster-control/src/util.ts

@@ -1,6 +1,6 @@
-import { TASK_STAGE_OPTIONS } from './constant';
+import { TASK_STAGE_OPTIONS_DISPOSAL_MANAGEMENT } from './constant';
 
 
 // 获取任务阶段
 // 获取任务阶段
 export const getTaskStage = (taskStage: number) => {
 export const getTaskStage = (taskStage: number) => {
-  return TASK_STAGE_OPTIONS.find((item) => item.value === taskStage)?.label;
+  return TASK_STAGE_OPTIONS_DISPOSAL_MANAGEMENT.find((item) => item.value === taskStage)?.label;
 };
 };

+ 2 - 0
src/views/disaster/disaster-precaution/PageTaskExecution.vue

@@ -118,10 +118,12 @@
   };
   };
   const handleSizeChange = (value: number) => {
   const handleSizeChange = (value: number) => {
     pagination.pageSize = value;
     pagination.pageSize = value;
+    taskManagementListQuery.pageSize = value;
     getTableData();
     getTableData();
   };
   };
   const handleCurrentChange = (value: number) => {
   const handleCurrentChange = (value: number) => {
     pagination.pageNumber = value;
     pagination.pageNumber = value;
+    taskManagementListQuery.pageNumber = value;
     getTableData();
     getTableData();
   };
   };
   const currentTaskId = ref<number>();
   const currentTaskId = ref<number>();

+ 2 - 0
src/views/disaster/disaster-precaution/PageTaskManagement.vue

@@ -257,10 +257,12 @@
   const tableData = ref<TaskManagementListResponse[]>([]);
   const tableData = ref<TaskManagementListResponse[]>([]);
   const handleSizeChange = (value: number) => {
   const handleSizeChange = (value: number) => {
     pagination.pageSize = value;
     pagination.pageSize = value;
+    taskManagementListQuery.pageSize = value;
     getTableData();
     getTableData();
   };
   };
   const handleCurrentChange = (value: number) => {
   const handleCurrentChange = (value: number) => {
     pagination.pageNumber = value;
     pagination.pageNumber = value;
+    taskManagementListQuery.pageNumber = value;
     getTableData();
     getTableData();
   };
   };
   const getTableData = async () => {
   const getTableData = async () => {

+ 2 - 10
src/views/disaster/disaster-precaution/src/config/form.ts

@@ -3,6 +3,7 @@
  */
  */
 import type { FormConfig } from '@/types/basic-form';
 import type { FormConfig } from '@/types/basic-form';
 import type { TaskManagementRuleForm } from '../type';
 import type { TaskManagementRuleForm } from '../type';
+import { validateFormTime } from '@/views/disaster/utils/validateTime';
 
 
 // 通用表单配置
 // 通用表单配置
 const BASIC_FORM_CONFIG = {
 const BASIC_FORM_CONFIG = {
@@ -121,16 +122,7 @@ export const TASK_MANAGEMENT_FROM_RULES = {
   inspectType: [{ required: true, message: '请选择检查类型', trigger: 'change' }],
   inspectType: [{ required: true, message: '请选择检查类型', trigger: 'change' }],
   dueCompleteTime: [
   dueCompleteTime: [
     { required: true, message: '请选择应完成时间', trigger: 'change' },
     { required: true, message: '请选择应完成时间', trigger: 'change' },
-    {
-      validator: (rule, value, callback) => {
-        if (value && new Date(value) < new Date()) {
-          callback(new Error('预警时间不能早于当前时间'));
-        } else {
-          callback();
-        }
-      },
-      trigger: 'change',
-    },
+    { validator: validateFormTime, trigger: 'change' },
   ],
   ],
   userGroupList: [{ required: true, message: '请选择检查责任人', trigger: 'change' }],
   userGroupList: [{ required: true, message: '请选择检查责任人', trigger: 'change' }],
   isPush: [{ required: true, message: '请选择是否推送', trigger: 'change' }],
   isPush: [{ required: true, message: '请选择是否推送', trigger: 'change' }],

+ 1 - 1
src/views/disaster/disaster-warning/PageDefenseNoticeItem.vue

@@ -100,10 +100,10 @@
     if (!dynamicComponentRef.value) return;
     if (!dynamicComponentRef.value) return;
     const res = await dynamicComponentRef.value.handleValidate();
     const res = await dynamicComponentRef.value.handleValidate();
     if (!res) return;
     if (!res) return;
-    formLoading.value = true;
     const formData = dynamicComponentRef.value.getFormData();
     const formData = dynamicComponentRef.value.getFormData();
     let message;
     let message;
     try {
     try {
+      formLoading.value = true;
       if (operate === 'create') {
       if (operate === 'create') {
         await createDefenseNoticeItemFunc(formData);
         await createDefenseNoticeItemFunc(formData);
         message = '创建成功';
         message = '创建成功';

+ 1 - 0
src/views/disaster/disaster-warning/PageWarningInfoItem.vue

@@ -80,6 +80,7 @@
     const formData = dynamicComponentRef.value.getFormData();
     const formData = dynamicComponentRef.value.getFormData();
     let message;
     let message;
     try {
     try {
+      formLoading.value = true;
       if (operate === 'create') {
       if (operate === 'create') {
         await createWarningInfoItemFunc(formData);
         await createWarningInfoItemFunc(formData);
         message = '创建成功';
         message = '创建成功';

+ 2 - 10
src/views/disaster/disaster-warning/src/config/form.ts

@@ -2,6 +2,7 @@
  * 灾害预警信息表单配置
  * 灾害预警信息表单配置
  */
  */
 import type { FormConfig } from '@/types/basic-form';
 import type { FormConfig } from '@/types/basic-form';
+import { validateFormTime } from '@/views/disaster/utils/validateTime';
 // 通用表单信息
 // 通用表单信息
 const BASIC_FROM_CONFIG = {
 const BASIC_FROM_CONFIG = {
   DISASTER_LEVEL: {
   DISASTER_LEVEL: {
@@ -154,16 +155,7 @@ export const WARNING_INFO_FROM_RULES = {
   ...BASIC_FROM_RULES,
   ...BASIC_FROM_RULES,
   warnTime: [
   warnTime: [
     { required: true, message: '请选择预警时间', trigger: 'change' },
     { required: true, message: '请选择预警时间', trigger: 'change' },
-    {
-      validator: (rule, value, callback) => {
-        if (value && new Date(value) < new Date()) {
-          callback(new Error('预警时间不能早于当前时间'));
-        } else {
-          callback();
-        }
-      },
-      trigger: 'change',
-    },
+    { validator: validateFormTime, trigger: 'change' },
   ],
   ],
   source: [{ required: true, message: '请输入信息来源', trigger: 'blur' }],
   source: [{ required: true, message: '请输入信息来源', trigger: 'blur' }],
 };
 };

+ 0 - 11
src/views/disaster/disaster-warning/src/util.ts

@@ -1,11 +0,0 @@
-import { WEATHER_DISASTER_ALERT_TYPE } from './constant';
-/**
- * 格式化灾害类型
- */
-export const formatDisasterType = (disasterType: string) => {
-  const alertType = WEATHER_DISASTER_ALERT_TYPE.find((item) => item.value === disasterType);
-  if (alertType) {
-    return alertType.label;
-  }
-  return '未知灾害类型';
-};

+ 10 - 0
src/views/disaster/utils/validateTime.ts

@@ -0,0 +1,10 @@
+/**
+ * 验证表单时间
+ */
+export const validateFormTime = (rule: any, value: string, callback: any) => {
+  if (value && new Date(value) < new Date()) {
+    callback(new Error('时间不能早于当前时间'));
+  } else {
+    callback();
+  }
+};