Преглед изворни кода

feat: 更新风险管理和设备告警模块,优化表单展示和数据处理逻辑以及其他问题

sunqijun пре 1 месец
родитељ
комит
334270bb14

+ 55 - 0
src/api/equipment-high-alert-List/index.ts

@@ -0,0 +1,55 @@
+/*
+ * @Author: liuJie
+ * @Date: 2026-03-12 16:06:18
+ * @LastEditors: liuJie
+ * @LastEditTime: 2026-03-12 16:11:25
+ * @Describe: 告警列表
+ */
+import { http } from '@/utils/http/axios';
+
+export interface QueryParamType {
+    pageNumber: number;
+    pageSize: number;
+    queryParam: {
+      //设备编码
+      deviceNo?: string | undefined;
+      //设备名称
+      deviceName?: string | undefined;
+      // 设备类型
+      deviceType?: string | undefined;
+      // 告警类型
+      alarmType?: string | undefined;
+      // 所属部门
+      deptName?: string | undefined;
+      // 开始时间
+      startTime: string | undefined,
+      // 结束
+      endTime: string | undefined,
+    };
+  }
+  // 列表数据
+export const equipmentHighAlertList = (query: QueryParamType)=>{
+  return http.request({
+    url: '/prodAlarm/queryProdAlarm',
+    method: 'post',
+    data: query,
+  });
+}
+  // 所属部门
+export const deptList = ()=>{
+  return http.request({
+    url: '/prodAlarm/queryDept',
+    method: 'post',
+  });
+}
+// 导出接口
+export const exportTableData = (params)=>{
+    return http.request({
+        url: '/prodAlarm/export',
+        method: 'post',
+        data: params,
+        responseType: 'blob',
+    }, {
+        isTransformResponse: false,
+    });
+}

+ 8 - 0
src/views/production-safety/implement-safety-duty/responsibility-agree-manage.vue

@@ -317,6 +317,14 @@
           : undefined,
       },
     }).then((res) => {
+      res.records.forEach(item=>{
+        // 未下发
+        if(item.status === 1){
+            item.issuedQuantity = '-'
+            item.signedQuantity = '-'
+            item.signedRatio = '-'
+        }
+      })
       tableData.data = res.records;
       tableData.total = res.totalRow;
     });

+ 5 - 4
src/views/production-safety/implement-safety-duty/sign-agree-dept.vue

@@ -34,10 +34,10 @@
               <div class="label">签署人数:</div>
               <div class="value">{{ formData.signedQuantity }}</div>
             </div>
-            <!-- <div class="col">
-              <div class="label">下发对象:</div>
-              <div class="value">{{ formData.userGroupName }}</div>
-            </div> -->
+            <div class="col">
+              <div class="label">下发:</div>
+              <div class="value">{{ formData.issueQuantity }}</div>
+            </div>
           </div>
           <div class="row">
             <div class="col">
@@ -252,6 +252,7 @@
     signsUpload: [],
     responsibilityName: '',
     statusName: '',
+    issueQuantity: '',
     signedQuantity: '',
     userGroupName: '',
     planStartTime: null,

+ 2 - 0
src/views/production-safety/productionSafetySystem/doubleSystemManagement/configs/form.ts

@@ -90,4 +90,6 @@ export const DUAL_SYSTEM_FORM_RULES = {
   fileFormat: [{ required: true, message: '请选择文件格式', trigger: 'change' }],
   releaseDate: [{ required: true, message: '请选择发布日期', trigger: 'change' }],
   fileUrl: [{ required: true, message: '请上传文件', trigger: 'change' }],
+  content: [{ required: true, message: '请输入内容', trigger: 'blur' }],
+  status: [{ required: true, message: '请选择状态', trigger: 'blur' }],
 };

+ 19 - 65
src/views/production-safety/risk-identification-and-control/equipment-high-alert/list.vue

@@ -62,7 +62,7 @@
                 <span>所属部门:</span>
                 <el-cascader
                   v-model="useDeptPath"
-                  :options="deptOptions"
+                  :options="deptTreeList"
                   :props="deptCascaderProps"
                   :show-all-levels="false"
                   placeholder="请选择责任部门"
@@ -127,13 +127,6 @@
 <script lang="ts" setup>
   import { onMounted, reactive, ref } from 'vue';
   import { ElMessage } from 'element-plus';
-  import {
-    querySpecialEquipmentPage,
-    deleteSpecialEquipment,
-    exportSpecialEquipment,
-    type SpecialEquipment,
-    type SpecialEquipmentQueryParam,
-  } from '@/api/production-safety/special-equipment';
   import { getAllDepartments } from '@/api/auth/dept';
   import { formatDeptTree } from '@/views/disaster/utils/formatDeptTree';
   import BasicTable from '@/components/BasicTable.vue';
@@ -141,50 +134,13 @@
   import ActionButton from '@/components/ActionButton.vue';
   import { TABLE_OPTIONS, SPECIAL_EQUIPMENT_TABLE_COLUMNS } from './configs/tables';
   import { DEVICE_CATEGORY_OPTIONS, Alarm_TYPE_OPTIONS, DEVICE_TYPE, ALARM_TYPE} from './configs/form';
+  import {type QueryParamType, equipmentHighAlertList, deptList, exportTableData} from '@/api/equipment-high-alert-List'
   import { downloadByData } from '@/utils/file/download';
-import { http } from '@/utils/http/axios';
+
   import dayjs from 'dayjs';
   const loading = ref(false);
   const dateRange = ref<[string, string] | null>(null);
-  interface  QueryParamType {
-    pageNumber: number;
-    pageSize: number;
-    queryParam: {
-      //设备编码
-      deviceNo?: string | undefined;
-      //设备名称
-      deviceName?: string | undefined;
-      // 设备类型
-      deviceType?: string | undefined;
-      // 告警类型
-      alarmType?: string | undefined;
-      // 所属部门
-      deptName?: string | undefined;
-      // 开始时间
-      startTime: string | undefined,
-      // 结束
-      endTime: string | undefined,
-    };
-  }
-  // 列表数据
-const equipmentHighAlertList = (query: QueryParamType)=>{
-  return http.request({
-    url: '/prodAlarm/queryProdAlarm',
-    method: 'post',
-    data: query,
-  });
-}
-// 导出接口
-const exportTableData = (params)=>{
-    return http.request({
-        url: '/prodAlarm/export',
-        method: 'post',
-        data: params,
-        responseType: 'blob',
-    }, {
-        isTransformResponse: false,
-    });
-}
+  
 
   // BasicTable
   const basicTableRef = ref<InstanceType<typeof BasicTable>>();
@@ -222,7 +178,7 @@ const exportTableData = (params)=>{
   };
 
   const tableData = ref([]);
-
+  const deptTreeList = ref([])
   const handleSizeChange = (value: number) => {
     pagination.pageSize = value;
     queryParams.pageSize = value;
@@ -236,12 +192,16 @@ const exportTableData = (params)=>{
     queryTableList();
   };
 
-  const getStatusText = (status?: number, statusName?: string) => {
-    if (statusName) return statusName;
-    if (status === 1) return '在用';
-    if (status === 2) return '停用';
-    if (status === 3) return '报废';
-    return '-';
+  const getDeptList = async () => {
+    try {
+      let res = await deptList()
+      deptTreeList.value = res.records || []
+      console.log(res.records)
+    } catch (e) {
+      console.error('获取部门树失败:', e);
+      deptOptions.value = [];
+    }
+    
   };
 
   const loadDeptTree = async () => {
@@ -275,18 +235,11 @@ const exportTableData = (params)=>{
         pageSize: queryParams.pageSize,
         queryParam:{
             ...queryParams.queryParam,
-            startTime: dateRange?.[0]
-                ? dayjs(dateRange?.[0]).format('YYYY-MM-DD')
-                : undefined,
-            endTime: dateRange?.[1]
-                ? dayjs(dateRange?.[1]).format('YYYY-MM-DD')
-                : undefined,
+            startTime: dateRange.value?.[0] ?? undefined,
+            endTime: dateRange.value?.[1] ?? undefined,
         }
     }
-    equipmentHighAlertList({
-        ...queryParams
-
-    })
+    equipmentHighAlertList(data)
       .then((res: any) => {
         tableData.value = res?.records;
         pagination.total = res?.totalRow ?? res?.total ?? 0;
@@ -336,6 +289,7 @@ const exportTableData = (params)=>{
   };
 
   onMounted(() => {
+    getDeptList()
     loadDeptTree();
     queryTableList();
   });

+ 8 - 8
src/views/production-safety/risk-identification-and-control/hazard-manage/add.vue

@@ -126,7 +126,7 @@
               <!-- <el-select v-model="formValue.inherentRiskM" size="large" placeholder="1-5" style="width: 330px">
             <el-option v-for="n in 5" :key="n" :label="n" :value="n" />
           </el-select> -->
-              <el-input-number
+              <el-input
                 placeholder="请输入固有风险评估(M)"
                 :step="1"
                 :precision="0"
@@ -141,7 +141,7 @@
               <!-- <el-select v-model="formValue.inherentRiskE" size="large" placeholder="1-6" style="width: 330px">
             <el-option v-for="n in 6" :key="n" :label="n" :value="n" />
           </el-select> -->
-              <el-input-number
+              <el-input
                 placeholder="请输入固有风险评估(E)"
                 :step="1"
                 :precision="0"
@@ -156,7 +156,7 @@
               <!-- <el-select v-model="formValue.inherentRiskS" size="large" placeholder="1-5" style="width: 330px">
                   <el-option v-for="n in 5" :key="n" :label="n" :value="n" />
                 </el-select> -->
-              <el-input-number
+              <el-input
                 placeholder="请输入固有风险评估(S)"
                 :step="1"
                 :precision="0"
@@ -305,7 +305,7 @@
               <!-- <el-select v-model="formValue.controlRiskM" size="large" placeholder="1-5" style="width: 330px">
             <el-option v-for="n in 5" :key="n" :label="n" :value="n" />
           </el-select> -->
-              <el-input-number
+              <el-input
                 placeholder="控制风险评估(M)"
                 :step="1"
                 :precision="0"
@@ -320,7 +320,7 @@
               <!-- <el-select v-model="formValue.controlRiskE" size="large" placeholder="1-6" style="width: 330px">
             <el-option v-for="n in 6" :key="n" :label="n" :value="n" />
           </el-select> -->
-              <el-input-number
+              <el-input
                 placeholder="控制风险评估(E)"
                 :step="1"
                 :precision="0"
@@ -335,7 +335,7 @@
               <!-- <el-select v-model="formValue.controlRiskS" size="large" placeholder="1-5" style="width: 330px">
             <el-option v-for="n in 5" :key="n" :label="n" :value="n" />
           </el-select> -->
-              <el-input-number
+              <el-input
                 placeholder="控制风险评估(S)"
                 :step="1"
                 :precision="0"
@@ -356,8 +356,8 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="风险等级" prop="controlRiskLevel">
-              <el-select v-model="formValue.controlRiskLevel" size="large" placeholder="请选择" style="width: 280px">
+            <el-form-item label="控制风险等级" prop="controlRiskLevel">
+              <el-select v-model="formValue.controlRiskLevel" size="large" placeholder="请选择控制风险等级" style="width: 280px">
                 <!-- <el-option label="A" value="A" />
             <el-option label="B" value="B" />
             <el-option label="C" value="C" /> -->

+ 7 - 7
src/views/production-safety/risk-identification-and-control/hazard-manage/edit.vue

@@ -114,7 +114,7 @@
           <!-- <el-select v-model="formValue.inherentRiskM" size="large" placeholder="1-5" style="width: 330px">
             <el-option v-for="n in 5" :key="n" :label="n" :value="n" />
           </el-select> -->
-          <el-input-number
+          <el-input
             placeholder="输入固有风险评估M"
             :step="1"
             :precision="0"
@@ -127,7 +127,7 @@
           <!-- <el-select v-model="formValue.inherentRiskE" size="large" placeholder="1-6" style="width: 330px">
             <el-option v-for="n in 6" :key="n" :label="n" :value="n" />
           </el-select> -->
-          <el-input-number
+          <el-input
             placeholder="输入固有风险评估E"
             :step="1"
             :precision="0"
@@ -140,7 +140,7 @@
           <!-- <el-select v-model="formValue.inherentRiskS" size="large" placeholder="1-5" style="width: 330px">
                   <el-option v-for="n in 5" :key="n" :label="n" :value="n" />
                 </el-select> -->
-          <el-input-number
+          <el-input
             placeholder="输入固有风险评估S"
             :step="1"
             :precision="0"
@@ -265,7 +265,7 @@
           <!-- <el-select v-model="formValue.controlRiskM" size="large" placeholder="1-5" style="width: 330px">
             <el-option v-for="n in 5" :key="n" :label="n" :value="n" />
           </el-select> -->
-          <el-input-number
+          <el-input
             placeholder="输入控制风险评估M"
             :step="1"
             :precision="0"
@@ -278,7 +278,7 @@
           <!-- <el-select v-model="formValue.controlRiskE" size="large" placeholder="1-6" style="width: 330px">
             <el-option v-for="n in 6" :key="n" :label="n" :value="n" />
           </el-select> -->
-          <el-input-number
+          <el-input
             placeholder="输入控制风险评估E"
             :step="1"
             :precision="0"
@@ -291,7 +291,7 @@
           <!-- <el-select v-model="formValue.controlRiskS" size="large" placeholder="1-5" style="width: 330px">
             <el-option v-for="n in 5" :key="n" :label="n" :value="n" />
           </el-select> -->
-          <el-input-number
+          <el-input
             placeholder="输入控制风险评估S"
             :step="1"
             :precision="0"
@@ -309,7 +309,7 @@
           />
         </el-form-item>
         <el-form-item label="控制风险等级" prop="controlRiskLevel">
-          <el-select v-model="formValue.controlRiskLevel" size="large" placeholder="请选择" style="width: 330px">
+          <el-select v-model="formValue.controlRiskLevel" size="large" placeholder="请选择控制风险等级" style="width: 330px">
             <!-- <el-option label="A" value="A" />
             <el-option label="B" value="B" />
             <el-option label="C" value="C" /> -->

+ 15 - 4
src/views/production-safety/risk-identification-and-control/hazard-manage/list.vue

@@ -41,7 +41,13 @@
           </el-form-item> -->
 
           <el-form-item label="固有风险等级">
-            <el-select
+            <el-input
+              v-model="queryParams.queryParam.inherentRiskLevel"
+              placeholder="搜索固有风险等级"
+              style="width: 170px"
+            />
+            <!-- 需求变更为input -->
+            <!-- <el-select
               v-model="queryParams.queryParam.inherentRiskLevel"
               clearable
               placeholder="固有风险等级"
@@ -49,17 +55,22 @@
             >
               <el-option :value="1" label="B" />
               <el-option :value="2" label="C" />
-            </el-select>
+            </el-select> -->
           </el-form-item>
           <el-form-item label="控制风险等级">
-            <el-select
+            <el-input
+              v-model="queryParams.queryParam.controlRiskLevel"
+              placeholder="搜索控制风险等级"
+              style="width: 170px"
+            />
+            <!-- <el-select
               v-model="queryParams.queryParam.controlRiskLevel"
               clearable
               placeholder="控制风险等级"
               style="width: 170px"
             >
               <el-option value="D" label="D" />
-            </el-select>
+            </el-select> -->
           </el-form-item>
         </el-form>
 

+ 6 - 6
src/views/production-safety/risk-identification-and-control/hazard-manage/view.vue

@@ -124,7 +124,7 @@
           <!-- <el-select v-model="formValue.inherentRiskM" size="large" placeholder="1-5" style="width: 330px">
             <el-option v-for="n in 5" :key="n" :label="n" :value="n" />
           </el-select> -->
-          <el-input-number
+          <el-input
             disabled
             :step="1"
             :precision="0"
@@ -137,7 +137,7 @@
           <!-- <el-select v-model="formValue.inherentRiskE" size="large" placeholder="1-6" style="width: 330px">
             <el-option v-for="n in 6" :key="n" :label="n" :value="n" />
           </el-select> -->
-          <el-input-number
+          <el-input
             disabled
             :step="1"
             :precision="0"
@@ -150,7 +150,7 @@
           <!-- <el-select v-model="formValue.inherentRiskS" size="large" placeholder="1-5" style="width: 330px">
                   <el-option v-for="n in 5" :key="n" :label="n" :value="n" />
                 </el-select> -->
-          <el-input-number
+          <el-input
             disabled
             :step="1"
             :precision="0"
@@ -284,7 +284,7 @@
           <!-- <el-select v-model="formValue.controlRiskM" size="large" placeholder="1-5" style="width: 330px">
             <el-option v-for="n in 5" :key="n" :label="n" :value="n" />
           </el-select> -->
-          <el-input-number
+          <el-input
             disabled
             :step="1"
             :precision="0"
@@ -297,7 +297,7 @@
           <!-- <el-select v-model="formValue.controlRiskE" size="large" placeholder="1-6" style="width: 330px">
             <el-option v-for="n in 6" :key="n" :label="n" :value="n" />
           </el-select> -->
-          <el-input-number
+          <el-input
             disabled
             :step="1"
             :precision="0"
@@ -310,7 +310,7 @@
           <!-- <el-select v-model="formValue.controlRiskS" size="large" placeholder="1-5" style="width: 330px">
             <el-option v-for="n in 5" :key="n" :label="n" :value="n" />
           </el-select> -->
-          <el-input-number
+          <el-input
             disabled
             :step="1"
             :precision="0"

+ 4 - 4
src/views/production-safety/risk-identification-and-control/special-equipment-manage/add.vue

@@ -14,9 +14,9 @@
       >
         <template #deviceStatus>
           <el-radio-group v-model="formData.deviceStatus">
-            <el-radio :label="1">在用</el-radio>
-            <el-radio :label="2">停用</el-radio>
-            <el-radio :label="3">报废</el-radio>
+            <el-radio :value="1">在用</el-radio>
+            <el-radio :value="2">停用</el-radio>
+            <el-radio :value="3">报废</el-radio>
           </el-radio-group>
         </template>
         <template #useDepartment>
@@ -117,7 +117,7 @@
     if (Array.isArray(val) && val.length) {
       (formData as any).responsibilityDeptId = val[val.length - 1];
       (formData as any).useDepartment = getDeptNameByPath(deptOptions.value, val);
-      useDepartmentPath.value = [...val];
+      responsibilityDeptPath.value = [...val];
     } else {
       (formData as any).responsibilityDeptId = undefined;
     }