فهرست منبع

fix: 修复危险源清单管理bug,劳防用品管理bug,劳防用品领用管理bug

sunqijun 2 ماه پیش
والد
کامیت
53ca0ffeb9

+ 8 - 1
src/api/production-safety/personal-protective-equipment.ts

@@ -1,3 +1,10 @@
+/*
+ * @Author: liuJie
+ * @Date: 2026-02-26 13:57:24
+ * @LastEditors: liuJie
+ * @LastEditTime: 2026-03-06 15:28:00
+ * @Describe: file describe
+ */
 import { http } from '@/utils/http/axios';
 import type { QueryPageRequest, QueryPageResponse } from '@/types/basic-query';
 
@@ -13,7 +20,7 @@ export interface PersonalProtectiveEquipment {
   ppeCategory?: string; // 物品分类
   ppeName?: string; // 物品名称
   serviceMonths?: string; // 使用期限(月)
-  status?: number | string; // 用品状态:1-启用,0-禁用
+  status?: boolean; // 用品状态:1-启用,0-禁用
   remark?: string; // 备注
   isDeleted?: string | number; // 0-未删除,大于0(时间戳)-已删除
   createdAt?: string; // 创建时间

+ 1 - 1
src/api/production-safety/special-equipment.ts

@@ -108,7 +108,7 @@ export function deleteSpecialEquipment(id: number) {
 /**
  * 导出特种设备设施
  */
-export function exportSpecialEquipment(query: QueryPageRequest<SpecialEquipmentQueryParam>) {
+export function exportSpecialEquipment(query: SpecialEquipmentQueryParam) {
   return http.request({
     url: '/specialEquipment/exportInventory',
     method: 'post',

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

@@ -10,56 +10,72 @@
       <el-form ref="formRef" :inline="true" label-width="auto" :model="formValue" :rules="rules">
         <!-- 基础信息 -->
         <el-divider content-position="left">基础信息</el-divider>
-        <el-form-item label="危险源编号" prop="hazardCode">
-          <el-input
-            v-model="formValue.hazardCode"
-            size="large"
-            placeholder="例如:RD-202311-042"
-            style="width: 330px"
-          />
-        </el-form-item>
-        <el-form-item label="关键过程/作业单元" prop="keyProcessUnit">
-          <el-input
-            v-model="formValue.keyProcessUnit"
-            size="large"
-            placeholder="例如:张江快堆实验室(10号楼)"
-            style="width: 330px"
-          />
-        </el-form-item>
-        <el-form-item label="危险源名称" prop="hazardName">
-          <el-input
-            v-model="formValue.hazardName"
-            size="large"
-            placeholder="例如:高温熔融金属操作"
-            style="width: 330px"
-          />
-        </el-form-item>
-        <el-form-item label="是否重大危险源" prop="isMajorHazard">
-          <el-select v-model="formValue.isMajorHazard" size="large" placeholder="请选择" style="width: 330px">
-            <el-option :value="1" label="是" />
-            <el-option :value="0" label="否" />
-          </el-select>
-        </el-form-item>
-        <el-form-item label="危险源来源" prop="hazardSource">
-          <el-input
-            v-model="formValue.hazardSource"
-            size="large"
-            placeholder="例如:作业单元划分"
-            style="width: 330px"
-          />
-        </el-form-item>
-
-        <!-- 部门责任 -->
-        <el-form-item label="涉及部门" prop="involvedDepartment">
-          <el-input
-            v-model="formValue.involvedDepartment"
-            size="large"
-            placeholder="例如:核材料研究部/设备管理部(支持手动输入多部门)"
-            style="width: 330px"
-          />
-        </el-form-item>
-        <el-form-item label="风险管理部门" prop="riskManagementDept">
-          <!-- <el-cascader
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="危险源编号" prop="hazardCode">
+              <el-input
+                v-model="formValue.hazardCode"
+                size="large"
+                placeholder="请输入危险源编号"
+                style="width: 330px"
+              />
+            </el-form-item>
+            <el-form-item label="关键过程/作业单元" prop="keyProcessUnit">
+              <el-input
+                v-model="formValue.keyProcessUnit"
+                size="large"
+                placeholder="请输入关键过程/作业单元"
+                style="width: 330px"
+              />
+            </el-form-item>
+            <el-form-item label="危险源名称" prop="hazardName">
+              <el-input
+                v-model="formValue.hazardName"
+                size="large"
+                placeholder="请输入危险源名称"
+                style="width: 330px"
+              />
+            </el-form-item>
+            <el-form-item label="是否重大危险" prop="isMajorHazard">
+              <el-select
+                v-model="formValue.isMajorHazard"
+                size="large"
+                placeholder="请选择是否重大危险"
+                style="width: 330px"
+              >
+                <el-option :value="1" label="是" />
+                <el-option :value="0" label="否" />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="可能导致的后果" prop="possibleConsequences">
+              <el-input
+                v-model="formValue.possibleConsequences"
+                size="large"
+                placeholder="请输入可能导致的后果"
+                style="width: 330px"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="危险源来源" prop="hazardSource">
+              <el-input
+                v-model="formValue.hazardSource"
+                size="large"
+                placeholder="请输入危险源来源"
+                style="width: 330px"
+              />
+            </el-form-item>
+            <!-- 部门责任 -->
+            <el-form-item label="涉及型号" prop="involvedDepartment">
+              <el-input
+                v-model="formValue.involvedDepartment"
+                size="large"
+                placeholder="请输入涉及型号"
+                style="width: 330px"
+              />
+            </el-form-item>
+            <el-form-item label="危险源管理的主责单位/部门" prop="riskManagementDept">
+              <!-- <el-cascader
             :ref="(el) => (cascaderRef['riskManagementDept'] = el)"
             v-model="formValue.riskManagementDeptId"
             size="large"
@@ -71,10 +87,15 @@
             filterable
             @change="() => handleChangeDept('riskManagementDept')"
           /> -->
-          <el-input size="large" placeholder="请选择" v-model="formValue.riskManagementDept" style="width: 330px" />
-        </el-form-item>
-        <el-form-item label="协作部门" prop="cooperationDept">
-          <!-- <el-cascader
+              <el-input
+                size="large"
+                placeholder="请输入危险源管理的主责单位/部门"
+                v-model="formValue.riskManagementDept"
+                style="width: 330px"
+              />
+            </el-form-item>
+            <el-form-item label="危险源管理的配合单位/部门" prop="cooperationDept">
+              <!-- <el-cascader
             v-model="formValue.cooperationDeptId"
             :ref="(el) => (cascaderRef['cooperationDept'] = el)"
             size="large"
@@ -86,67 +107,120 @@
             filterable
             @change="handleChangeDept('cooperationDept')"
           /> -->
-          <el-input size="large" placeholder="请选择" v-model="formValue.cooperationDept" style="width: 330px" />
-        </el-form-item>
+              <el-input
+                size="large"
+                placeholder="请输入危险源管理的配合单位/部门"
+                v-model="formValue.cooperationDept"
+                style="width: 330px"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
 
         <!-- 风险评估 -->
-        <el-form-item label="可能后果" prop="possibleConsequences">
-          <el-input
-            v-model="formValue.possibleConsequences"
-            size="large"
-            placeholder="例如:灼伤、火灾"
-            style="width: 330px"
-          />
-        </el-form-item>
 
         <el-divider content-position="left">固有风险评估</el-divider>
-        <el-form-item label="可能性(M)" prop="inherentRiskM">
-          <!-- <el-select v-model="formValue.inherentRiskM" size="large" placeholder="1-5" style="width: 330px">
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="M" prop="inherentRiskM">
+              <!-- <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 :step="1" :precision="0" v-model="formValue.inherentRiskM" :min="1" style="width: 330px" />
-        </el-form-item>
-        <el-form-item label="暴露频率(E)" prop="inherentRiskE">
-          <!-- <el-select v-model="formValue.inherentRiskE" size="large" placeholder="1-6" style="width: 330px">
+              <el-input-number
+                placeholder="请输入固有风险评估(M)"
+                :step="1"
+                :precision="0"
+                v-model="formValue.inherentRiskM"
+                :min="1"
+                style="width: 280px"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="E" prop="inherentRiskE">
+              <!-- <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 :step="1" :precision="0" v-model="formValue.inherentRiskE" :min="1" style="width: 330px" />
-        </el-form-item>
-        <el-form-item label="严重度(S)" prop="inherentRiskS">
-          <!-- <el-select v-model="formValue.inherentRiskS" size="large" placeholder="1-5" style="width: 330px">
+              <el-input-number
+                placeholder="请输入固有风险评估(E)"
+                :step="1"
+                :precision="0"
+                v-model="formValue.inherentRiskE"
+                :min="1"
+                style="width: 280px"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="S" prop="inherentRiskS">
+              <!-- <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 :step="1" :precision="0" v-model="formValue.inherentRiskS" :min="1" style="width: 330px" />
-        </el-form-item>
-        <el-form-item label="风险值(R)" prop="inherentRiskR">
-          <el-input v-model="formValue.inherentRiskR" size="large" placeholder="自动计算: M×E×S" style="width: 330px" />
-        </el-form-item>
-        <el-form-item label="风险等级" prop="inherentRiskLevel">
-          <el-select v-model="formValue.inherentRiskLevel" size="large" placeholder="请选择" style="width: 330px">
-            <!-- <el-option label="A" value="A" /> -->
-            <el-option label="B" value="B" />
-            <el-option label="C" value="C" />
-            <!-- <el-option label="D" value="D" /> -->
-          </el-select>
-        </el-form-item>
-        <el-form-item label="升级等级" prop="inherentRiskUpgrade">
-          <el-input v-model="formValue.inherentRiskUpgrade" size="large" placeholder="例如:2级" style="width: 330px" />
-        </el-form-item>
+              <el-input-number
+                placeholder="请输入固有风险评估(S)"
+                :step="1"
+                :precision="0"
+                v-model="formValue.inherentRiskS"
+                :min="1"
+                style="width: 280px"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="R" prop="inherentRiskR">
+              <el-input
+                placeholder="请输入固有风险评估(R)"
+                v-model="formValue.inherentRiskR"
+                size="large"
+                style="width: 280px"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="固有风险等级" prop="inherentRiskLevel">
+              <el-select
+                v-model="formValue.inherentRiskLevel"
+                size="large"
+                placeholder="请选择固有风险等级"
+                style="width: 280px"
+              >
+                <!-- <el-option label="A" value="A" /> -->
+                <el-option label="B" value="B" />
+                <el-option label="C" value="C" />
+                <!-- <el-option label="D" value="D" /> -->
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="固有风险升级" prop="inherentRiskUpgrade">
+              <el-input
+                v-model="formValue.inherentRiskUpgrade"
+                size="large"
+                placeholder="请输入固有风险升级"
+                style="width: 280px"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
 
-        <!-- 管控措施 -->
-        <el-divider content-position="left">管控措施</el-divider>
-        <el-form-item label="主要管控措施" prop="controlMeasures">
-          <el-input
-            type="textarea"
-            :rows="3"
-            v-model="formValue.controlMeasures"
-            size="large"
-            placeholder="每条措施用分号分隔,例如:1.穿戴防护服;2.设置隔离区;3.定期检查冷却系统"
-            style="width: 330px"
-          />
-        </el-form-item>
-        <el-form-item label="主责部门" prop="controlMainDept">
-          <!-- <el-cascader
+        <!-- 风险控制 -->
+        <el-divider content-position="left">风险控制</el-divider>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="措施内容" prop="controlMeasures">
+              <el-input
+                type="textarea"
+                :rows="3"
+                v-model="formValue.controlMeasures"
+                size="large"
+                placeholder="请输入措施内容"
+                style="width: 280px"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="主责单位/部门" prop="controlMainDept">
+              <!-- <el-cascader
             v-model="formValue.controlMainDeptId"
             :ref="(el) => (cascaderRef['controlMainDept'] = el)"
             size="large"
@@ -158,10 +232,17 @@
             filterable
             @change="handleChangeDept('controlMainDept')"
           /> -->
-          <el-input size="large" placeholder="请选择" v-model="formValue.controlMainDept" style="width: 330px" />
-        </el-form-item>
-        <el-form-item label="协作部门" prop="controlCoopDept">
-          <!-- <el-cascader
+              <el-input
+                size="large"
+                placeholder="请输入单位/部门"
+                v-model="formValue.controlMainDept"
+                style="width: 280px"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="配合单位/部门" prop="controlCoopDept">
+              <!-- <el-cascader
             v-model="formValue.controlCoopDeptId"
             :ref="(el) => (cascaderRef['controlCoopDept'] = el)"
             size="large"
@@ -173,77 +254,123 @@
             filterable
             @change="handleChangeDept('controlCoopDept')"
           /> -->
-          <el-input size="large" placeholder="请选择" v-model="formValue.controlCoopDept" style="width: 330px" />
-        </el-form-item>
-        <el-form-item label="完成期限" prop="completionDeadline">
-          <el-date-picker
-            v-model="formValue.completionDeadline"
-            type="date"
-            size="large"
-            placeholder="选择日期"
-            format="YYYY-MM-DD"
-            value-format="YYYY-MM-DD"
-            style="width: 330px"
-          />
-        </el-form-item>
-        <el-form-item label="完成状态" prop="completionStatus">
-          <el-input
-            v-model="formValue.completionStatus"
-            size="large"
-            placeholder="例如:措施1,2已完成"
-            style="width: 330px"
-          />
-        </el-form-item>
-        <el-form-item label="验证状态" prop="verificationStatus">
-          <el-input
-            v-model="formValue.verificationStatus"
-            size="large"
-            placeholder="例如:措施1已验证"
-            style="width: 330px"
-          />
-        </el-form-item>
+              <el-input
+                size="large"
+                placeholder="请输入配合单位/部门"
+                v-model="formValue.controlCoopDept"
+                style="width: 280px"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="完成期限" prop="completionDeadline">
+              <el-date-picker
+                v-model="formValue.completionDeadline"
+                type="date"
+                size="large"
+                placeholder="选择日期"
+                format="YYYY-MM-DD"
+                value-format="YYYY-MM-DD"
+                style="width: 280px"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="完成情况" prop="completionStatus">
+              <el-input
+                v-model="formValue.completionStatus"
+                size="large"
+                placeholder="输入完成情况"
+                style="width: 280px"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="措施验证情况" prop="verificationStatus">
+              <el-input
+                v-model="formValue.verificationStatus"
+                size="large"
+                placeholder="输入措施验证情况"
+                style="width: 280px"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
 
-        <!-- 剩余风险 -->
-        <el-divider content-position="left">剩余风险评估</el-divider>
-        <el-form-item label="可能性(M)" prop="controlRiskM">
-          <!-- <el-select v-model="formValue.controlRiskM" size="large" placeholder="1-5" style="width: 330px">
+        <!-- 控制风险评估 -->
+        <el-divider content-position="left">控制风险评估</el-divider>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="M" prop="controlRiskM">
+              <!-- <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 :step="1" :precision="0" v-model="formValue.controlRiskM" :min="1" style="width: 330px" />
-        </el-form-item>
-        <el-form-item label="暴露频率(E)" prop="controlRiskE">
-          <!-- <el-select v-model="formValue.controlRiskE" size="large" placeholder="1-6" style="width: 330px">
+              <el-input-number
+                placeholder="控制风险评估(M)"
+                :step="1"
+                :precision="0"
+                v-model="formValue.controlRiskM"
+                :min="1"
+                style="width: 280px"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="E" prop="controlRiskE">
+              <!-- <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 :step="1" :precision="0" v-model="formValue.controlRiskE" :min="1" style="width: 330px" />
-        </el-form-item>
-        <el-form-item label="严重度(S)" prop="controlRiskS">
-          <!-- <el-select v-model="formValue.controlRiskS" size="large" placeholder="1-5" style="width: 330px">
+              <el-input-number
+                placeholder="控制风险评估(E)"
+                :step="1"
+                :precision="0"
+                v-model="formValue.controlRiskE"
+                :min="1"
+                style="width: 280px"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="S" prop="controlRiskS">
+              <!-- <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 :step="1" :precision="0" v-model="formValue.controlRiskS" :min="1" style="width: 330px" />
-        </el-form-item>
-        <el-form-item label="风险值(R)" prop="controlRiskR">
-          <el-input v-model="formValue.controlRiskR" size="large" placeholder="自动计算: M×E×S" style="width: 330px" />
-        </el-form-item>
-        <el-form-item label="风险等级" prop="controlRiskLevel">
-          <el-select v-model="formValue.controlRiskLevel" size="large" placeholder="请选择" style="width: 330px">
-            <!-- <el-option label="A" value="A" />
+              <el-input-number
+                placeholder="控制风险评估(S)"
+                :step="1"
+                :precision="0"
+                v-model="formValue.controlRiskS"
+                :min="1"
+                style="width: 280px"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="R" prop="controlRiskR">
+              <el-input
+                placeholder="控制风险评估(R)"
+                v-model="formValue.controlRiskR"
+                size="large"
+                style="width: 280px"
+              />
+            </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-option label="A" value="A" />
             <el-option label="B" value="B" />
             <el-option label="C" value="C" /> -->
-            <el-option label="D" value="D" />
-          </el-select>
-        </el-form-item>
+                <el-option label="D" value="D" />
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
 
         <!-- 备注 -->
+        <el-divider content-position="left">备注</el-divider>
         <el-form-item label="备注" prop="remarks" style="width: 87.2%">
-          <el-input
-            type="textarea"
-            v-model="formValue.remarks"
-            size="large"
-            :rows="7"
-            placeholder="例如:需每月提交检查报告"
-          />
+          <el-input type="textarea" v-model="formValue.remarks" size="large" :rows="7" placeholder="请输入备注" />
         </el-form-item>
       </el-form>
     </main>
@@ -295,7 +422,7 @@
     inherentRiskM: undefined as number | undefined,
     inherentRiskE: undefined as number | undefined,
     inherentRiskS: undefined as number | undefined,
-    inherentRiskR: 0, // 自动计算
+    inherentRiskR: '', // 自动计算
     inherentRiskLevel: '',
     inherentRiskUpgrade: '',
     controlMeasures: '',
@@ -309,7 +436,7 @@
     controlRiskM: undefined as number | undefined,
     controlRiskE: undefined as number | undefined,
     controlRiskS: undefined as number | undefined,
-    controlRiskR: 0,
+    controlRiskR: '',
     controlRiskLevel: '',
     remarks: '',
   });
@@ -324,16 +451,24 @@
     riskManagementDept: [{ required: true, message: '请选择风险管理部门', trigger: 'change' }],
     cooperationDept: [{ required: true, message: '请选择协作部门', trigger: 'change' }],
     possibleConsequences: [{ required: true, message: '请输入可能后果', trigger: 'blur' }],
-    inherentRiskM: [{ required: true, message: '请选择可能性', trigger: 'change' }],
-    inherentRiskE: [{ required: true, message: '请选择暴露频率', trigger: 'change' }],
-    inherentRiskS: [{ required: true, message: '请选择严重度', trigger: 'change' }],
+    inherentRiskM: [{ required: true, message: '请选择固有风险评估(M)', trigger: 'change' }],
+    inherentRiskE: [{ required: true, message: '请选择固有风险评估(E)', trigger: 'change' }],
+    inherentRiskS: [{ required: true, message: '请选择固有风险评估(S)', trigger: 'change' }],
+    inherentRiskR: [{ required: true, message: '请输入固有风险评估(R)', trigger: 'blur' }],
     inherentRiskLevel: [{ required: true, message: '请选择风险等级', trigger: 'change' }],
+    inherentRiskUpgrade: [{ required: true, message: '请选择风险升级', trigger: 'blur' }],
     controlMeasures: [{ required: true, message: '请输入管控措施', trigger: 'blur' }],
     controlMainDept: [{ required: true, message: '请选择主责部门', trigger: 'change' }],
-    controlRiskM: [{ required: true, message: '请选择剩余风险可能性', trigger: 'change' }],
-    controlRiskE: [{ required: true, message: '请选择剩余风险暴露频率', trigger: 'change' }],
-    controlRiskS: [{ required: true, message: '请选择剩余风险严重度', trigger: 'change' }],
+    controlCoopDept: [{ required: true, message: '请输入配合单位/部门', trigger: 'change' }],
+    completionDeadline: [{ required: true, message: '请选择完成期限', trigger: 'change' }],
+    completionStatus: [{ required: true, message: '请输入完成情况', trigger: 'blur' }],
+    verificationStatus: [{ required: true, message: '措施验证情况', trigger: 'blur' }],
+    controlRiskM: [{ required: true, message: '请选择控制风险评估(M)', trigger: 'change' }],
+    controlRiskE: [{ required: true, message: '请选择控制风险评估(E)', trigger: 'change' }],
+    controlRiskS: [{ required: true, message: '请选择控制风险评估(S)', trigger: 'change' }],
+    controlRiskR: [{ required: true, message: '请输入控制风险评估(R)', trigger: 'change' }],
     controlRiskLevel: [{ required: true, message: '请选择剩余风险等级', trigger: 'change' }],
+    remarks: [{ required: true, message: '请输入备注', trigger: 'blur' }],
   });
 
   const handleChangeDept = (prop) => {

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

@@ -4,9 +4,9 @@
     <header class="safety-platform-container__header">
       <div class="breadcrumb-title"> {{ detailData?.hazardName }} </div>
       <div class="detail-content">
-        <span>编号:{{ detailData?.hazardCode }} </span>
-        <span>创建人:{{ detailData?.createdByName }} </span>
-        <span>创建时间:{{ detailData?.createdAt }} </span>
+        <span class="m-r">编号:{{ detailData?.hazardCode }} </span>
+        <span class="m-r">创建人:{{ detailData?.createdName }} </span>
+        <span class="m-r">创建时间:{{ detailData?.createdAt }} </span>
       </div>
       <el-tabs v-model="activeTab" @tab-click="clickTab">
         <el-tab-pane label="全部" name="" />
@@ -16,6 +16,9 @@
       </el-tabs>
     </header>
     <main class="safety-platform-container__main">
+      <div style="margin-bottom: 20px">
+        <el-button type="primary" @click="handleAddPlan">添加 </el-button>
+      </div>
       <div class="search-form">
         <el-form :inline="true">
           <el-form-item label="状态">
@@ -28,7 +31,7 @@
           </el-form-item>
           <el-form-item label="部门名称">
             <el-cascader
-              v-model="queryParams.queryParam.responsibleDepartmentId"
+              v-model="queryParams.queryParam.execDepartment"
               style="width: 170px"
               ref="cascaderRef"
               :options="firstLevelDepts"
@@ -54,7 +57,6 @@
         </el-form>
 
         <div>
-          <el-button type="primary" @click="handleAddPlan">添加 </el-button>
           <el-button type="primary" @click="queryTableList">查询</el-button>
           <el-button @click="handleRestParams">重置</el-button>
         </div>
@@ -151,7 +153,7 @@
   const cascaderRef = ref();
   const detailData = reactive({
     createdAt: '',
-    createdByName: '',
+    createdName: '',
     hazardName: '',
     hazardCode: '',
   });
@@ -232,7 +234,7 @@
   const handleChangeDept = () => {
     const deptInfo = cascaderRef.value?.getCheckedNodes();
     if (deptInfo?.[0]) {
-      queryParams.queryParam.execDepartment = deptInfo[0].label;
+      queryParams.queryParam.execDepartment = deptInfo[0].value; //id
     }
   };
 
@@ -339,4 +341,7 @@
     flex-shrink: 0;
     background-color: white;
   }
+  .m-r {
+    margin-right: 10px;
+  }
 </style>

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

@@ -34,7 +34,7 @@
             style="width: 330px"
           />
         </el-form-item>
-        <el-form-item label="是否重大危险" prop="isMajorHazard">
+        <el-form-item label="是否重大危险" prop="isMajorHazard">
           <el-select v-model="formValue.isMajorHazard" size="large" placeholder="请选择" style="width: 330px">
             <el-option :value="1" label="是" />
             <el-option :value="0" label="否" />
@@ -50,7 +50,7 @@
         </el-form-item>
 
         <!-- 部门责任 -->
-        <el-form-item label="涉及部门" prop="involvedDepartment">
+        <el-form-item label="涉及型号" prop="involvedDepartment">
           <el-input
             v-model="formValue.involvedDepartment"
             size="large"
@@ -58,7 +58,7 @@
             style="width: 330px"
           />
         </el-form-item>
-        <el-form-item label="风险管理部门" prop="riskManagementDept">
+        <el-form-item label="危险源管理的主责单位/部门" prop="riskManagementDept">
           <!-- <el-cascader
             :ref="(el) => (cascaderRef['riskManagementDept'] = el)"
             v-model="formValue.riskManagementDeptId"
@@ -71,9 +71,14 @@
             filterable
             @change="() => handleChangeDept('riskManagementDept')"
           /> -->
-          <el-input size="large" placeholder="请选择" v-model="formValue.riskManagementDept" style="width: 330px" />
+          <el-input
+            size="large"
+            placeholder="请输入危险源管理的主责单位/部门"
+            v-model="formValue.riskManagementDept"
+            style="width: 330px"
+          />
         </el-form-item>
-        <el-form-item label="协作部门" prop="cooperationDept">
+        <el-form-item label="危险源管理的配合单位/部门" prop="cooperationDept">
           <!-- <el-cascader
             v-model="formValue.cooperationDeptId"
             :ref="(el) => (cascaderRef['cooperationDept'] = el)"
@@ -86,66 +91,107 @@
             filterable
             @change="handleChangeDept('cooperationDept')"
           /> -->
-          <el-input size="large" placeholder="请选择" v-model="formValue.cooperationDept" style="width: 330px" />
+          <el-input
+            size="large"
+            placeholder="请输入危险源管理的配合单位/部门"
+            v-model="formValue.cooperationDept"
+            style="width: 330px"
+          />
         </el-form-item>
 
         <!-- 风险评估 -->
-        <el-form-item label="可能后果" prop="possibleConsequences">
+        <el-form-item label="可能导致的后果" prop="possibleConsequences">
           <el-input
             v-model="formValue.possibleConsequences"
             size="large"
-            placeholder="例如:灼伤、火灾"
+            placeholder="输入可能导致的后果"
             style="width: 330px"
           />
         </el-form-item>
 
         <el-divider content-position="left">固有风险评估</el-divider>
-        <el-form-item label="可能性(M)" prop="inherentRiskM">
+        <el-form-item label="M" prop="inherentRiskM">
           <!-- <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 :step="1" :precision="0" v-model="formValue.inherentRiskM" :min="1" style="width: 330px" />
+          <el-input-number
+            placeholder="输入固有风险评估M"
+            :step="1"
+            :precision="0"
+            v-model="formValue.inherentRiskM"
+            :min="1"
+            style="width: 330px"
+          />
         </el-form-item>
-        <el-form-item label="暴露频率(E)" prop="inherentRiskE">
+        <el-form-item label="E" prop="inherentRiskE">
           <!-- <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 :step="1" :precision="0" v-model="formValue.inherentRiskE" :min="1" style="width: 330px" />
+          <el-input-number
+            placeholder="输入固有风险评估E"
+            :step="1"
+            :precision="0"
+            v-model="formValue.inherentRiskE"
+            :min="1"
+            style="width: 330px"
+          />
         </el-form-item>
-        <el-form-item label="严重度(S)" prop="inherentRiskS">
+        <el-form-item label="S" prop="inherentRiskS">
           <!-- <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 :step="1" :precision="0" v-model="formValue.inherentRiskS" :min="1" style="width: 330px" />
+          <el-input-number
+            placeholder="输入固有风险评估S"
+            :step="1"
+            :precision="0"
+            v-model="formValue.inherentRiskS"
+            :min="1"
+            style="width: 330px"
+          />
         </el-form-item>
-        <el-form-item label="风险值(R)" prop="inherentRiskR">
-          <el-input v-model="formValue.inherentRiskR" size="large" placeholder="自动计算: M×E×S" style="width: 330px" />
+        <el-form-item label="R" prop="inherentRiskR">
+          <el-input
+            placeholder="输入固有风险评估R"
+            v-model="formValue.inherentRiskR"
+            size="large"
+            style="width: 330px"
+          />
         </el-form-item>
-        <el-form-item label="风险等级" prop="inherentRiskLevel">
-          <el-select v-model="formValue.inherentRiskLevel" size="large" placeholder="请选择" style="width: 330px">
+        <el-form-item label="固有风险等级" prop="inherentRiskLevel">
+          <el-select
+            v-model="formValue.inherentRiskLevel"
+            size="large"
+            placeholder="请选择固有风险等级"
+            style="width: 330px"
+          >
             <!-- <el-option label="A" value="A" /> -->
             <el-option label="B" value="B" />
             <el-option label="C" value="C" />
             <!-- <el-option label="D" value="D" /> -->
           </el-select>
         </el-form-item>
-        <el-form-item label="升级等级" prop="inherentRiskUpgrade">
-          <el-input v-model="formValue.inherentRiskUpgrade" size="large" placeholder="例如:2级" style="width: 330px" />
+        <el-form-item label="固有风险升级" prop="inherentRiskUpgrade">
+          <el-input
+            v-model="formValue.inherentRiskUpgrade"
+            size="large"
+            placeholder="输入固有风险升级"
+            style="width: 330px"
+          />
         </el-form-item>
 
-        <!-- 管控措施 -->
-        <el-divider content-position="left">管控措施</el-divider>
-        <el-form-item label="主要管控措施" prop="controlMeasures">
+        <!-- 风险控制 -->
+        <el-divider content-position="left">风险控制</el-divider>
+        <el-form-item label="措施内容" prop="controlMeasures">
           <el-input
             type="textarea"
             :rows="3"
             v-model="formValue.controlMeasures"
             size="large"
-            placeholder="每条措施用分号分隔,例如:1.穿戴防护服;2.设置隔离区;3.定期检查冷却系统"
+            placeholder="请填写措施内容"
             style="width: 330px"
           />
         </el-form-item>
-        <el-form-item label="主责部门" prop="controlMainDept">
+        <el-form-item label="主责单位/部门" prop="controlMainDept">
           <!-- <el-cascader
             v-model="formValue.controlMainDeptId"
             :ref="(el) => (cascaderRef['controlMainDept'] = el)"
@@ -158,9 +204,14 @@
             filterable
             @change="handleChangeDept('controlMainDept')"
           /> -->
-          <el-input size="large" placeholder="请选择" v-model="formValue.controlMainDept" style="width: 330px" />
+          <el-input
+            size="large"
+            placeholder="请输入输入主责单位/部门"
+            v-model="formValue.controlMainDept"
+            style="width: 330px"
+          />
         </el-form-item>
-        <el-form-item label="协作部门" prop="controlCoopDept">
+        <el-form-item label="配合单位/部门" prop="controlCoopDept">
           <!-- <el-cascader
             v-model="formValue.controlCoopDeptId"
             :ref="(el) => (cascaderRef['controlCoopDept'] = el)"
@@ -173,7 +224,12 @@
             filterable
             @change="handleChangeDept('controlCoopDept')"
           /> -->
-          <el-input size="large" placeholder="请选择" v-model="formValue.controlCoopDept" style="width: 330px" />
+          <el-input
+            size="large"
+            placeholder="请输入配合单位/部门"
+            v-model="formValue.controlCoopDept"
+            style="width: 330px"
+          />
         </el-form-item>
         <el-form-item label="完成期限" prop="completionDeadline">
           <el-date-picker
@@ -186,47 +242,73 @@
             style="width: 330px"
           />
         </el-form-item>
-        <el-form-item label="完成状态" prop="completionStatus">
+        <el-form-item label="完成情况" prop="completionStatus">
           <el-input
             v-model="formValue.completionStatus"
             size="large"
-            placeholder="例如:措施1,2已完成"
+            placeholder="请输入完成情况"
             style="width: 330px"
           />
         </el-form-item>
-        <el-form-item label="验证状态" prop="verificationStatus">
+        <el-form-item label="措施验证情况" prop="verificationStatus">
           <el-input
             v-model="formValue.verificationStatus"
             size="large"
-            placeholder="例如:措施1已验证"
+            placeholder="输入措施验证情况"
             style="width: 330px"
           />
         </el-form-item>
 
-        <!-- 剩余风险 -->
-        <el-divider content-position="left">剩余风险评估</el-divider>
-        <el-form-item label="可能性(M)" prop="controlRiskM">
+        <!-- 控制风险评估 -->
+        <el-divider content-position="left">控制风险评估</el-divider>
+        <el-form-item label="M" prop="controlRiskM">
           <!-- <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 :step="1" :precision="0" v-model="formValue.controlRiskM" :min="1" style="width: 330px" />
+          <el-input-number
+            placeholder="输入控制风险评估M"
+            :step="1"
+            :precision="0"
+            v-model="formValue.controlRiskM"
+            :min="1"
+            style="width: 330px"
+          />
         </el-form-item>
-        <el-form-item label="暴露频率(E)" prop="controlRiskE">
+        <el-form-item label="E" prop="controlRiskE">
           <!-- <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 :step="1" :precision="0" v-model="formValue.controlRiskE" :min="1" style="width: 330px" />
+          <el-input-number
+            placeholder="输入控制风险评估E"
+            :step="1"
+            :precision="0"
+            v-model="formValue.controlRiskE"
+            :min="1"
+            style="width: 330px"
+          />
         </el-form-item>
-        <el-form-item label="严重度(S)" prop="controlRiskS">
+        <el-form-item label="S" prop="controlRiskS">
           <!-- <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 :step="1" :precision="0" v-model="formValue.controlRiskS" :min="1" style="width: 330px" />
+          <el-input-number
+            placeholder="输入控制风险评估S"
+            :step="1"
+            :precision="0"
+            v-model="formValue.controlRiskS"
+            :min="1"
+            style="width: 330px"
+          />
         </el-form-item>
-        <el-form-item label="风险值(R)" prop="controlRiskR">
-          <el-input v-model="formValue.controlRiskR" size="large" placeholder="自动计算: M×E×S" style="width: 330px" />
+        <el-form-item label="R" prop="controlRiskR">
+          <el-input
+            v-model="formValue.controlRiskR"
+            size="large"
+            placeholder="输入控制风险评估R"
+            style="width: 330px"
+          />
         </el-form-item>
-        <el-form-item label="风险等级" prop="controlRiskLevel">
+        <el-form-item label="控制风险等级" prop="controlRiskLevel">
           <el-select v-model="formValue.controlRiskLevel" size="large" placeholder="请选择" style="width: 330px">
             <!-- <el-option label="A" value="A" />
             <el-option label="B" value="B" />
@@ -237,13 +319,7 @@
 
         <!-- 备注 -->
         <el-form-item label="备注" prop="remarks" style="width: 87.2%">
-          <el-input
-            type="textarea"
-            v-model="formValue.remarks"
-            size="large"
-            :rows="7"
-            placeholder="例如:需每月提交检查报告"
-          />
+          <el-input type="textarea" v-model="formValue.remarks" size="large" :rows="7" placeholder="请填写备注" />
         </el-form-item>
       </el-form>
     </main>
@@ -325,16 +401,24 @@
     riskManagementDept: [{ required: true, message: '请选择风险管理部门', trigger: 'change' }],
     cooperationDept: [{ required: true, message: '请选择协作部门', trigger: 'change' }],
     possibleConsequences: [{ required: true, message: '请输入可能后果', trigger: 'blur' }],
-    inherentRiskM: [{ required: true, message: '请选择可能性', trigger: 'change' }],
-    inherentRiskE: [{ required: true, message: '请选择暴露频率', trigger: 'change' }],
-    inherentRiskS: [{ required: true, message: '请选择严重度', trigger: 'change' }],
+    inherentRiskM: [{ required: true, message: '请选择固有风险评估(M)', trigger: 'change' }],
+    inherentRiskE: [{ required: true, message: '请选择固有风险评估(E)', trigger: 'change' }],
+    inherentRiskS: [{ required: true, message: '请选择固有风险评估(S)', trigger: 'change' }],
+    inherentRiskR: [{ required: true, message: '请输入固有风险评估(R)', trigger: 'blur' }],
     inherentRiskLevel: [{ required: true, message: '请选择风险等级', trigger: 'change' }],
+    inherentRiskUpgrade: [{ required: true, message: '请选择风险升级', trigger: 'blur' }],
     controlMeasures: [{ required: true, message: '请输入管控措施', trigger: 'blur' }],
     controlMainDept: [{ required: true, message: '请选择主责部门', trigger: 'change' }],
-    controlRiskM: [{ required: true, message: '请选择剩余风险可能性', trigger: 'change' }],
-    controlRiskE: [{ required: true, message: '请选择剩余风险暴露频率', trigger: 'change' }],
-    controlRiskS: [{ required: true, message: '请选择剩余风险严重度', trigger: 'change' }],
+    controlCoopDept: [{ required: true, message: '请输入配合单位/部门', trigger: 'change' }],
+    completionDeadline: [{ required: true, message: '请选择完成期限', trigger: 'change' }],
+    completionStatus: [{ required: true, message: '请输入完成情况', trigger: 'blur' }],
+    verificationStatus: [{ required: true, message: '措施验证情况', trigger: 'blur' }],
+    controlRiskM: [{ required: true, message: '请选择控制风险评估(M)', trigger: 'change' }],
+    controlRiskE: [{ required: true, message: '请选择控制风险评估(E)', trigger: 'change' }],
+    controlRiskS: [{ required: true, message: '请选择控制风险评估(S)', trigger: 'change' }],
+    controlRiskR: [{ required: true, message: '请输入控制风险评估(R)', trigger: 'change' }],
     controlRiskLevel: [{ required: true, message: '请选择剩余风险等级', trigger: 'change' }],
+    remarks: [{ required: true, message: '请输入备注', trigger: 'blur' }],
   });
 
   const handleChangeDept = (prop) => {

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

@@ -4,6 +4,9 @@
       <div class="breadcrumb-title"> 危险源清单管理 </div>
     </header>
     <main class="safety-platform-container__main">
+      <div style="margin-bottom: 20px">
+        <el-button type="primary" @click="$router.push({ name: 'hazardManageAdd' })">添加 </el-button>
+      </div>
       <div class="search-form">
         <el-form :inline="true">
           <el-form-item label="搜索">
@@ -13,14 +16,14 @@
               style="width: 170px"
             />
           </el-form-item>
-          <el-form-item label="状态">
+          <!-- <el-form-item label="状态">
             <el-select v-model="queryParams.queryParam.status" clearable placeholder="状态" style="width: 170px">
               <el-option value="" label="全部" />
               <el-option :value="1" label="正常" />
               <el-option :value="2" label="待确认" />
             </el-select>
-          </el-form-item>
-          <el-form-item label="部门名称">
+          </el-form-item> -->
+          <!-- <el-form-item label="部门名称">
             <el-cascader
               v-model="queryParams.queryParam.responsibleDepartmentId"
               style="width: 170px"
@@ -32,7 +35,7 @@
               filterable
               @change="handleChangeDept"
             />
-          </el-form-item>
+          </el-form-item> -->
 
           <el-form-item label="固有风险等级">
             <el-select
@@ -58,7 +61,6 @@
         </el-form>
 
         <div>
-          <el-button type="primary" @click="$router.push({ name: 'hazardManageAdd' })">添加 </el-button>
           <el-button type="primary" @click="queryTableList">查询</el-button>
           <el-button @click="handleRestParams">重置</el-button>
         </div>
@@ -74,8 +76,8 @@
           <el-table-column label="危险源来源" prop="hazardSource" width="180" />
           <el-table-column label="涉及型号" prop="involvedDepartment" width="180" />
           <el-table-column label="危险源管理的主责单位/部门" prop="riskManagementDept" width="240" />
-          <el-table-column label="状态" prop="statusName" width="80" />
-          <el-table-column label="变更原因" prop="changeReason" width="120" />
+          <!-- <el-table-column label="状态" prop="statusName" width="80" /> -->
+          <!-- <el-table-column label="变更原因" prop="changeReason" width="120" /> -->
           <el-table-column fixed="right" min-width="240" label="操作">
             <template #default="scope">
               <el-button

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

@@ -37,7 +37,7 @@
             style="width: 330px"
           />
         </el-form-item>
-        <el-form-item label="是否重大危险" prop="isMajorHazard">
+        <el-form-item label="是否重大危险" prop="isMajorHazard">
           <el-select disabled v-model="formValue.isMajorHazard" size="large" placeholder="请选择" style="width: 330px">
             <el-option :value="1" label="是" />
             <el-option :value="0" label="否" />
@@ -54,7 +54,7 @@
         </el-form-item>
 
         <!-- 部门责任 -->
-        <el-form-item label="涉及部门" prop="involvedDepartment">
+        <el-form-item label="涉及型号" prop="involvedDepartment">
           <el-input
             disabled
             v-model="formValue.involvedDepartment"
@@ -63,7 +63,7 @@
             style="width: 330px"
           />
         </el-form-item>
-        <el-form-item label="风险管理部门" prop="riskManagementDept">
+        <el-form-item label="危险源管理的主责单位/部门" prop="riskManagementDept">
           <!-- <el-cascader
             disabled
             :ref="(el) => (cascaderRef['riskManagementDept'] = el)"
@@ -85,7 +85,7 @@
             style="width: 330px"
           />
         </el-form-item>
-        <el-form-item label="协作部门" prop="cooperationDept">
+        <el-form-item label="危险源管理的配合单位/部门" prop="cooperationDept">
           <!-- <el-cascader
             disabled
             v-model="formValue.cooperationDeptId"
@@ -109,7 +109,7 @@
         </el-form-item>
 
         <!-- 风险评估 -->
-        <el-form-item label="可能后果" prop="possibleConsequences">
+        <el-form-item label="可能导致的后果" prop="possibleConsequences">
           <el-input
             disabled
             v-model="formValue.possibleConsequences"
@@ -120,7 +120,7 @@
         </el-form-item>
 
         <el-divider content-position="left">固有风险评估</el-divider>
-        <el-form-item label="可能性(M)" prop="inherentRiskM">
+        <el-form-item label="M" prop="inherentRiskM">
           <!-- <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> -->
@@ -133,7 +133,7 @@
             style="width: 330px"
           />
         </el-form-item>
-        <el-form-item label="暴露频率(E)" prop="inherentRiskE">
+        <el-form-item label="E" prop="inherentRiskE">
           <!-- <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> -->
@@ -146,7 +146,7 @@
             style="width: 330px"
           />
         </el-form-item>
-        <el-form-item label="严重度(S)" prop="inherentRiskS">
+        <el-form-item label="S" prop="inherentRiskS">
           <!-- <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> -->
@@ -159,7 +159,7 @@
             style="width: 330px"
           />
         </el-form-item>
-        <el-form-item label="风险值(R)" prop="inherentRiskR">
+        <el-form-item label="R" prop="inherentRiskR">
           <el-input
             v-model="formValue.inherentRiskR"
             size="large"
@@ -168,7 +168,7 @@
             style="width: 330px"
           />
         </el-form-item>
-        <el-form-item label="风险等级" prop="inherentRiskLevel">
+        <el-form-item label="固有风险等级" prop="inherentRiskLevel">
           <el-select
             disabled
             v-model="formValue.inherentRiskLevel"
@@ -180,7 +180,7 @@
             <el-option label="C" value="C" />
           </el-select>
         </el-form-item>
-        <el-form-item label="升级等级" prop="inherentRiskUpgrade">
+        <el-form-item label="固有风险升级" prop="inherentRiskUpgrade">
           <el-input
             disabled
             v-model="formValue.inherentRiskUpgrade"
@@ -190,9 +190,9 @@
           />
         </el-form-item>
 
-        <!-- 管控措施 -->
-        <el-divider content-position="left">管控措施</el-divider>
-        <el-form-item label="主要管控措施" prop="controlMeasures">
+        <!-- 风险控制 -->
+        <el-divider content-position="left">风险控制</el-divider>
+        <el-form-item label="措施内容" prop="controlMeasures">
           <el-input
             disabled
             type="textarea"
@@ -203,7 +203,7 @@
             style="width: 330px"
           />
         </el-form-item>
-        <el-form-item label="主责部门" prop="controlMainDept">
+        <el-form-item label="主责单位/部门" prop="controlMainDept">
           <!-- <el-cascader
             disabled
             v-model="formValue.controlMainDeptId"
@@ -225,7 +225,7 @@
             style="width: 330px"
           />
         </el-form-item>
-        <el-form-item label="协作部门" prop="controlCoopDept">
+        <el-form-item label="配合单位/部门" prop="controlCoopDept">
           <!-- <el-cascader
             disabled
             v-model="formValue.controlCoopDeptId"
@@ -259,7 +259,7 @@
             style="width: 330px"
           />
         </el-form-item>
-        <el-form-item label="完成状态" prop="completionStatus">
+        <el-form-item label="完成情况" prop="completionStatus">
           <el-input
             disabled
             v-model="formValue.completionStatus"
@@ -268,7 +268,7 @@
             style="width: 330px"
           />
         </el-form-item>
-        <el-form-item label="验证状态" prop="verificationStatus">
+        <el-form-item label="措施验证情况" prop="verificationStatus">
           <el-input
             disabled
             v-model="formValue.verificationStatus"
@@ -278,9 +278,9 @@
           />
         </el-form-item>
 
-        <!-- 剩余风险 -->
-        <el-divider content-position="left">剩余风险评估</el-divider>
-        <el-form-item label="可能性(M)" prop="controlRiskM">
+        <!-- 控制风险评估 -->
+        <el-divider content-position="left">控制风险评估</el-divider>
+        <el-form-item label="M" prop="controlRiskM">
           <!-- <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> -->
@@ -293,7 +293,7 @@
             style="width: 330px"
           />
         </el-form-item>
-        <el-form-item label="暴露频率(E)" prop="controlRiskE">
+        <el-form-item label="E" prop="controlRiskE">
           <!-- <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> -->
@@ -306,7 +306,7 @@
             style="width: 330px"
           />
         </el-form-item>
-        <el-form-item label="严重度(S)" prop="controlRiskS">
+        <el-form-item label="S" prop="controlRiskS">
           <!-- <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> -->
@@ -319,7 +319,7 @@
             style="width: 330px"
           />
         </el-form-item>
-        <el-form-item label="风险值(R)" prop="controlRiskR">
+        <el-form-item label="R" prop="controlRiskR">
           <el-input
             v-model="formValue.controlRiskR"
             size="large"
@@ -328,7 +328,7 @@
             style="width: 330px"
           />
         </el-form-item>
-        <el-form-item label="风险等级" prop="controlRiskLevel">
+        <el-form-item label="控制风险等级" prop="controlRiskLevel">
           <el-select
             disabled
             v-model="formValue.controlRiskLevel"
@@ -433,16 +433,24 @@
     riskManagementDept: [{ required: true, message: '请选择风险管理部门', trigger: 'change' }],
     cooperationDept: [{ required: true, message: '请选择协作部门', trigger: 'change' }],
     possibleConsequences: [{ required: true, message: '请输入可能后果', trigger: 'blur' }],
-    inherentRiskM: [{ required: true, message: '请选择可能性', trigger: 'change' }],
-    inherentRiskE: [{ required: true, message: '请选择暴露频率', trigger: 'change' }],
-    inherentRiskS: [{ required: true, message: '请选择严重度', trigger: 'change' }],
+    inherentRiskM: [{ required: true, message: '请选择固有风险评估(M)', trigger: 'change' }],
+    inherentRiskE: [{ required: true, message: '请选择固有风险评估(E)', trigger: 'change' }],
+    inherentRiskS: [{ required: true, message: '请选择固有风险评估(S)', trigger: 'change' }],
+    inherentRiskR: [{ required: true, message: '请输入固有风险评估(R)', trigger: 'blur' }],
     inherentRiskLevel: [{ required: true, message: '请选择风险等级', trigger: 'change' }],
+    inherentRiskUpgrade: [{ required: true, message: '请选择风险升级', trigger: 'blur' }],
     controlMeasures: [{ required: true, message: '请输入管控措施', trigger: 'blur' }],
     controlMainDept: [{ required: true, message: '请选择主责部门', trigger: 'change' }],
-    controlRiskM: [{ required: true, message: '请选择剩余风险可能性', trigger: 'change' }],
-    controlRiskE: [{ required: true, message: '请选择剩余风险暴露频率', trigger: 'change' }],
-    controlRiskS: [{ required: true, message: '请选择剩余风险严重度', trigger: 'change' }],
+    controlCoopDept: [{ required: true, message: '请输入配合单位/部门', trigger: 'change' }],
+    completionDeadline: [{ required: true, message: '请选择完成期限', trigger: 'change' }],
+    completionStatus: [{ required: true, message: '请输入完成情况', trigger: 'blur' }],
+    verificationStatus: [{ required: true, message: '措施验证情况', trigger: 'blur' }],
+    controlRiskM: [{ required: true, message: '请选择控制风险评估(M)', trigger: 'change' }],
+    controlRiskE: [{ required: true, message: '请选择控制风险评估(E)', trigger: 'change' }],
+    controlRiskS: [{ required: true, message: '请选择控制风险评估(S)', trigger: 'change' }],
+    controlRiskR: [{ required: true, message: '请输入控制风险评估(R)', trigger: 'change' }],
     controlRiskLevel: [{ required: true, message: '请选择剩余风险等级', trigger: 'change' }],
+    remarks: [{ required: true, message: '请输入备注', trigger: 'blur' }],
   });
 
   const handleChangeDept = (prop) => {

+ 9 - 4
src/views/production-safety/risk-identification-and-control/labor-products-manage/add.vue

@@ -34,8 +34,8 @@
         </el-form-item>
         <el-form-item label="用品状态" prop="status">
           <el-radio-group v-model="form.status">
-            <el-radio :label="1">启用</el-radio>
-            <el-radio :label="0">禁用</el-radio>
+            <el-radio :value="true">启用</el-radio>
+            <el-radio :value="false">禁用</el-radio>
           </el-radio-group>
         </el-form-item>
         <el-form-item label="备注" prop="remark">
@@ -72,12 +72,17 @@
     ppeCategory: '',
     ppeName: '',
     serviceMonths: undefined as number | undefined, // 1-9999 整数
-    status: 1 as number, // 1-启用,0-禁用,默认启用
+    status: true, // true-启用,false-禁用,默认启用
     remark: '',
   });
 
   const formRules: FormRules = {
-    // 按需可加必填规则,接口未标注必填这里不强制
+    jobPost:[{ required: true, message: '请输入作业(岗位)分类', trigger: 'blur' }],
+    ppeCategory: [{ required: true, message: '请输入物品分类', trigger: 'blur' }],
+    ppeName:[{ required: true, message: '请输入物品名称', trigger: 'blur' }],
+    serviceMonths: [{ required: true, message: '请输入使用期限', trigger: 'blur' }],
+    status: [{ required: true, message: '请输入用品状态', trigger: 'change' }],
+    remark: [{ required: true, message: '请输入备注', trigger: 'blur' }],
   };
 
   const handleSubmit = async () => {

+ 12 - 5
src/views/production-safety/risk-identification-and-control/labor-products-manage/edit.vue

@@ -35,8 +35,8 @@
         </el-form-item>
         <el-form-item label="用品状态" prop="status">
           <el-radio-group v-model="form.status">
-            <el-radio :label="1">启用</el-radio>
-            <el-radio :label="0">禁用</el-radio>
+            <el-radio :value="true">启用</el-radio>
+            <el-radio :value="false">禁用</el-radio>
           </el-radio-group>
         </el-form-item>
         <el-form-item label="备注" prop="remark">
@@ -81,11 +81,18 @@
     ppeCategory: '',
     ppeName: '',
     serviceMonths: undefined as number | undefined, // 1-9999 整数
-    status: 1 as number, // 1-启用,0-禁
+    status: true, // true-启用,false-禁用,默认启
     remark: '',
   });
 
-  const formRules: FormRules = {};
+ const formRules: FormRules = {
+    jobPost:[{ required: true, message: '请输入作业(岗位)分类', trigger: 'blur' }],
+    ppeCategory: [{ required: true, message: '请输入物品分类', trigger: 'blur' }],
+    ppeName:[{ required: true, message: '请输入物品名称', trigger: 'blur' }],
+    serviceMonths: [{ required: true, message: '请输入使用期限', trigger: 'blur' }],
+    status: [{ required: true, message: '请输入用品状态', trigger: 'change' }],
+    remark: [{ required: true, message: '请输入备注', trigger: 'blur' }],
+  };
 
   const getDetail = async () => {
     if (!id.value) {
@@ -103,7 +110,7 @@
         const sm = res.serviceMonths;
         form.serviceMonths =
           sm !== '' && sm != null && !Number.isNaN(Number(sm)) ? Number(sm) : undefined;
-        form.status = res.status === 1 || res.status === '1' ? 1 : 0;
+        form.status = res.status
         form.remark = res.remark ?? '';
       }
     } catch (e) {

+ 14 - 12
src/views/production-safety/risk-identification-and-control/labor-products-manage/list.vue

@@ -4,6 +4,11 @@
       <div class="breadcrumb-title">劳防用品管理</div>
     </header>
     <main class="safety-platform-container__main">
+        <div style="margin-bottom:20px">
+           <el-button type="primary" @click="$router.push({ name: 'laborProductsManageAdd' })">
+            添加
+          </el-button>
+        </div>
       <div class="search-form">
         <el-form :inline="true">
           <el-form-item label="物品名称">
@@ -21,8 +26,8 @@
               clearable
               style="width: 170px"
             >
-              <el-option label="启用" :value="1" />
-              <el-option label="禁用" :value="0" />
+              <el-option label="启用" :value="true" />
+              <el-option label="禁用" :value="false" />
             </el-select>
           </el-form-item>
           <!-- <el-form-item label="申请部门编码">
@@ -43,9 +48,7 @@
           </el-form-item> -->
         </el-form>
         <div>
-          <el-button type="primary" @click="$router.push({ name: 'laborProductsManageAdd' })">
-            添加
-          </el-button>
+         
           <el-button type="primary" @click="queryTableList">查询</el-button>
           <el-button @click="handleRestParams">重置</el-button>
         </div>
@@ -53,17 +56,16 @@
 
       <div class="table-content">
         <el-table v-loading="loading" :data="tableData.data">
-          <el-table-column label="作业(岗位)分类" prop="jobPost" min-width="120" />
-          <el-table-column label="物品分类" prop="ppeCategory" min-width="120" />
+          <el-table-column label="作业(岗位)分类" prop="jobPost" min-width="160" />
+          <el-table-column label="物品分类" prop="ppeCategory" min-width="140" />
           <el-table-column label="物品名称" prop="ppeName" min-width="120" />
-          <el-table-column label="使用期限(月)" prop="serviceMonths" width="120" />
-          <el-table-column label="用品状态" prop="status" width="100">
+          <el-table-column label="使用期限(月)" prop="serviceMonths" width="140" />
+          <el-table-column label="用品状态" prop="status" width="120">
             <template #default="{ row }">
               {{
-                row.status === 1 ||
-                row.status === '1'
+                row.status === true
                   ? '启用'
-                  : row.status === 0 || row.status === '0'
+                  : row.status === false
                     ? '禁用'
                     : '-'
               }}

+ 3 - 3
src/views/production-safety/risk-identification-and-control/labor-products-manage/view.vue

@@ -28,8 +28,8 @@
         </el-form-item>
         <el-form-item label="用品状态" prop="status">
           <el-radio-group v-model="form.status" disabled>
-            <el-radio :label="true">启用</el-radio>
-            <el-radio :label="false">禁用</el-radio>
+            <el-radio :value="true">启用</el-radio>
+            <el-radio :value="false">禁用</el-radio>
           </el-radio-group>
         </el-form-item>
         <el-form-item label="备注" prop="remark">
@@ -91,7 +91,7 @@
         const sm = res.serviceMonths;
         form.serviceMonths =
           sm !== '' && sm != null && !Number.isNaN(Number(sm)) ? Number(sm) : undefined;
-        form.status = res.status === true || res.status === 'true';
+        form.status = res.status
         form.remark = res.remark ?? '';
         form.createdAt = res.createdAt ?? '';
         form.updatedAt = res.updatedAt ?? '';

+ 13 - 10
src/views/production-safety/risk-identification-and-control/labor-products-requisition-manage/list.vue

@@ -4,12 +4,20 @@
       <div class="breadcrumb-title">劳防用品领用管理</div>
     </header>
     <main class="safety-platform-container__main">
+        <div style="margin-bottom:20px">
+            <el-button
+            type="primary"
+            @click="$router.push({ name: 'laborProductsRequisitionManageAdd' })"
+          >
+            添加
+          </el-button>
+        </div>
       <div class="search-form">
         <el-form :inline="true">
-          <el-form-item label="标题">
+          <el-form-item label="防护用品名称">
             <el-input
               v-model="queryParams.queryParam.name"
-              placeholder="请输入标题"
+              placeholder="请输入防护用品名称"
               clearable
               style="width: 170px"
             />
@@ -27,12 +35,7 @@
           </el-form-item>
         </el-form>
         <div>
-          <el-button
-            type="primary"
-            @click="$router.push({ name: 'laborProductsRequisitionManageAdd' })"
-          >
-            添加
-          </el-button>
+          
           <el-button type="primary" @click="queryTableList">查询</el-button>
           <el-button @click="handleRestParams">重置</el-button>
         </div>
@@ -40,8 +43,8 @@
 
       <div class="table-content">
         <el-table v-loading="loading" :data="tableData.data">
-          <el-table-column label="职业危害因素" prop="hazardFactor" min-width="120" show-overflow-tooltip />
-          <el-table-column label="防护用品名称" prop="ppeName" min-width="120" />
+          <el-table-column label="职业危害因素" prop="hazardFactor" min-width="140" show-overflow-tooltip />
+          <el-table-column label="防护用品名称" prop="ppeName" min-width="140" />
           <el-table-column label="型号" prop="version" min-width="100" />
           <el-table-column label="领用数量" prop="receiveNum" width="120" align="center" />
           <el-table-column label="发放人" prop="issuerName" width="100" />

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

@@ -301,7 +301,7 @@
   };
   const handleDownload = async () => {
     try {
-      const response = await exportSpecialEquipment(queryParams);
+      const response = await exportSpecialEquipment(queryParams.queryParam);
       if (response) {
         const fileName = `特种设备设施管理_${new Date().toISOString().split('T')[0]}.xlsx`;
         downloadByData(response, fileName);