Browse Source

fix:危险审批模块根据原型对照修改,优化表单结构和验证规则;修改风险管理列表按钮权限

sunqijun 1 month ago
parent
commit
a61aae011a

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

@@ -5,16 +5,16 @@
     </header>
     </header>
 
 
     <main class="safety-platform-container__main">
     <main class="safety-platform-container__main">
-      <el-form ref="formRef" :model="formValue" :rules="rules" label-width="160px" label-position="right">
+      <el-form ref="formRef" :model="formValue" :rules="rules" label-width="180px" label-position="right">
         <div class="section-title">基础信息</div>
         <div class="section-title">基础信息</div>
-        <div class="form-grid">
+        <div class="form-grid" style="width:50%">
 
 
           <el-form-item label="申请单位" prop="applicationUnitName"
           <el-form-item label="申请单位" prop="applicationUnitName"
-            ><el-input size="large" v-model="formValue.applicationUnitName"
+            ><el-input size="large" placeholder="输入申请单位名称" v-model="formValue.applicationUnitName"
           /></el-form-item>
           /></el-form-item>
 
 
           <el-form-item label="申请人" prop="applicantName"
           <el-form-item label="申请人" prop="applicantName"
-            ><el-input size="large" v-model="formValue.applicantName"
+            ><el-input size="large" placeholder="输入申请人" v-model="formValue.applicantName"
           /></el-form-item>
           /></el-form-item>
 
 
           <el-form-item label="申请部门" prop="applicationDepartment"
           <el-form-item label="申请部门" prop="applicationDepartment"
@@ -25,18 +25,18 @@
               :options="firstLevelDepts"
               :options="firstLevelDepts"
               :props="cascaderProp"
               :props="cascaderProp"
               :show-all-levels="false"
               :show-all-levels="false"
-              placeholder="请选择部门名称"
+              placeholder="请选择申请部门"
               filterable
               filterable
               @change="handleChangeDept"
               @change="handleChangeDept"
               style="width: 100%"
               style="width: 100%"
           /></el-form-item>
           /></el-form-item>
 
 
           <el-form-item label="申请人电话" prop="applicantPhone"
           <el-form-item label="申请人电话" prop="applicantPhone"
-            ><el-input size="large" v-model="formValue.applicantPhone"
+            ><el-input size="large" placeholder="输入申请人电话" v-model="formValue.applicantPhone"
           /></el-form-item>
           /></el-form-item>
 
 
-          <el-form-item label="危险作业类" prop="hazardOperationType">
-            <el-select size="large" v-model="formValue.hazardOperationType" placeholder="选择危险作业类别" class="w-100">
+          <el-form-item label="危险作业类" prop="hazardOperationType">
+            <el-select size="large" v-model="formValue.hazardOperationType" @change="handleHazardOperationType" placeholder="选择危险作业类别">
               <el-option :value="1" label="有限空间" />
               <el-option :value="1" label="有限空间" />
               <el-option :value="2" label="高处作业" />
               <el-option :value="2" label="高处作业" />
               <el-option :value="3" label="临时用电" />
               <el-option :value="3" label="临时用电" />
@@ -50,71 +50,86 @@
             </el-select>
             </el-select>
           </el-form-item>
           </el-form-item>
 
 
-
-
-
-          <el-form-item label="备注信息" prop="remark" class="span-full">
+          <!-- <el-form-item label="备注信息" prop="remark" class="span-full">
             <el-input size="large" v-model="formValue.remark" type="textarea" :rows="2" placeholder="备注信息..." />
             <el-input size="large" v-model="formValue.remark" type="textarea" :rows="2" placeholder="备注信息..." />
-          </el-form-item>
+          </el-form-item> -->
         </div>
         </div>
 
 
         <div class="form-line-divider"></div>
         <div class="form-line-divider"></div>
 
 
         <template v-if="formValue.hazardOperationType === 1">
         <template v-if="formValue.hazardOperationType === 1">
           <div class="section-title">有限空间作业详情</div>
           <div class="section-title">有限空间作业详情</div>
-          <div class="form-grid">
-            <el-form-item label="所属单位" prop="space.confinedSpaceUnit"
-              ><el-input size="large" v-model="formValue.space.confinedSpaceUnit"
-            /></el-form-item>
-            <el-form-item label="空间名称" prop="space.confinedSpaceName"
-              ><el-input size="large" v-model="formValue.space.confinedSpaceName"
+          <div class="form-grid" style="width:50%">
+            <el-form-item label="有限空间所属单位" prop="space.confinedSpaceUnit"
+              ><el-input size="large" placeholder="输入有限空间所属单位" v-model="formValue.space.confinedSpaceUnit"
             /></el-form-item>
             /></el-form-item>
-            <el-form-item label="负责人" prop="space.unitResponsible"
-              ><el-input size="large" v-model="formValue.space.unitResponsible"
+            <el-form-item label="有限空间名称" prop="space.confinedSpaceName"
+              ><el-input size="large" placeholder="输入有限空间名称" v-model="formValue.space.confinedSpaceName"
             /></el-form-item>
             /></el-form-item>
-            <el-form-item label="监护人" prop="space.supervisor"
-              ><el-input size="large" v-model="formValue.space.supervisor"
-            /></el-form-item>
-            <el-form-item label="作业人" prop="space.operator"
-              ><el-input size="large" v-model="formValue.space.operator" placeholder="多人请用逗号分隔"
-            /></el-form-item>
-            <el-form-item label="其他作业" prop="space.otherSpecialOps"
-              ><el-input size="large" v-model="formValue.space.otherSpecialOps"
+
+            <el-form-item label="作业内容" prop="space.operationContent" class="span-full"
+              ><el-input size="large" placeholder="输入作业内容" v-model="formValue.space.operationContent" type="textarea"
             /></el-form-item>
             /></el-form-item>
-            <el-form-item label="开始时间" prop="space.operationStartTime"
+
+            <el-form-item label="作业开始时间" prop="space.operationStartTime"
               ><el-date-picker
               ><el-date-picker
                 size="large"
                 size="large"
                 v-model="formValue.space.operationStartTime"
                 v-model="formValue.space.operationStartTime"
                 value-format="YYYY-MM-DD"
                 value-format="YYYY-MM-DD"
-                class="w-100"
+                placeholder="作业开始时间"
+                style="width: 100%"
             /></el-form-item>
             /></el-form-item>
-            <el-form-item label="结束时间" prop="space.operationEndTime"
+            <el-form-item label="作业结束时间" prop="space.operationEndTime"
               ><el-date-picker
               ><el-date-picker
                 size="large"
                 size="large"
                 v-model="formValue.space.operationEndTime"
                 v-model="formValue.space.operationEndTime"
+                placeholder="作业结束时间"
                 value-format="YYYY-MM-DD"
                 value-format="YYYY-MM-DD"
-                class="w-100"
+                style="width: 100%"
+            /></el-form-item>
+
+            <el-form-item label="作业单位负责人" prop="space.unitResponsible"
+              ><el-input size="large" placeholder="输入作业单位负责人" v-model="formValue.space.unitResponsible"
+            /></el-form-item>
+            <el-form-item label="监护人" prop="space.supervisor"
+              ><el-input size="large" placeholder="输入监护人" v-model="formValue.space.supervisor"
+            /></el-form-item>
+            <el-form-item label="作业人" prop="space.operator"
+              ><el-input size="large" placeholder="输入作业人" v-model="formValue.space.operator"
+            /></el-form-item>
+            <el-form-item label="涉及其它特殊作业" prop="space.otherSpecialOps"
+              ><el-input size="large" placeholder="输入涉及其它特殊作业" v-model="formValue.space.otherSpecialOps"
+            /></el-form-item>
+
+            <el-form-item label="危害辨识" prop="space.hazardIdentification" class="span-full"
+              ><el-input size="large" placeholder="输入危害辨识" v-model="formValue.space.hazardIdentification" type="textarea"
+            /></el-form-item>
+            <el-form-item label="作业附件" class="span-full" prop="space.attachment"
+              ><UploadFiles
+                label="上传附件"
+                @upload-success="(l) => handleUpload('space', 'attachment', l)"
+                :fileList="listMap['space.attachment']"
             /></el-form-item>
             /></el-form-item>
           </div>
           </div>
 
 
           <div class="sub-group-box">
           <div class="sub-group-box">
-            <div class="sub-label is-required-manual section-title-flex">环境当前浓度指标 (初始评估)</div>
+            <div class="sub-label is-required-manual section-title-flex">项目分析-物质分析标准</div>
             <el-table :data="[formValue.space]" border class="density-table" style="margin-bottom: 20px">
             <el-table :data="[formValue.space]" border class="density-table" style="margin-bottom: 20px">
-              <el-table-column label="有毒有害物质 (toxicHazardous)">
+              <el-table-column label="有毒有害介质">
                 <template #default="scope">
                 <template #default="scope">
                   <el-form-item prop="space.toxicHazardous" :rules="r" label-width="0" class="m-0"
                   <el-form-item prop="space.toxicHazardous" :rules="r" label-width="0" class="m-0"
                     ><el-input v-model="scope.row.toxicHazardous"
                     ><el-input v-model="scope.row.toxicHazardous"
                   /></el-form-item>
                   /></el-form-item>
                 </template>
                 </template>
               </el-table-column>
               </el-table-column>
-              <el-table-column label="可燃气 (flammable)">
+              <el-table-column label="可燃气">
                 <template #default="scope">
                 <template #default="scope">
                   <el-form-item prop="space.flammable" :rules="r" label-width="0" class="m-0"
                   <el-form-item prop="space.flammable" :rules="r" label-width="0" class="m-0"
                     ><el-input v-model="scope.row.flammable"
                     ><el-input v-model="scope.row.flammable"
                   /></el-form-item>
                   /></el-form-item>
                 </template>
                 </template>
               </el-table-column>
               </el-table-column>
-              <el-table-column label="氧含量 (oxygenContent)">
+              <el-table-column label="氧含量">
                 <template #default="scope">
                 <template #default="scope">
                   <el-form-item prop="space.oxygenContent" :rules="r" label-width="0" class="m-0"
                   <el-form-item prop="space.oxygenContent" :rules="r" label-width="0" class="m-0"
                     ><el-input v-model="scope.row.oxygenContent"
                     ><el-input v-model="scope.row.oxygenContent"
@@ -124,68 +139,102 @@
             </el-table>
             </el-table>
           </div>
           </div>
 
 
+          <div class="section-title-flex">
+          <span class="is-required-manual">项目分析-危害分析记录</span>
+          <el-button type="primary" @click="addRow('analysis')">+ 新增记录</el-button>
+        </div>
+        <el-table :data="formValue.analysis" border>
+          <el-table-column label="有毒有害介质"
+            ><template #default="scope"><el-input v-model="scope.row.toxicSubstance" /></template
+          ></el-table-column>
+          <el-table-column label="可燃气"
+            ><template #default="scope"><el-input v-model="scope.row.flammableGas" /></template
+          ></el-table-column>
+          <el-table-column label="氧含量"
+            ><template #default="scope"><el-input v-model="scope.row.oxygenContent" /></template
+          ></el-table-column>
+          <el-table-column label="部位"
+            ><template #default="scope"><el-input v-model="scope.row.analysisPosition" /></template
+          ></el-table-column>
+          <el-table-column label="分析人" width="130"
+            ><template #default="scope"><el-input v-model="scope.row.analyst" /></template
+          ></el-table-column>
+          <el-table-column label="时间" width="220"
+            ><template #default="scope">
+              <el-date-picker
+                v-model="scope.row.analysisTime"
+                value-format="YYYY-MM-DD"
+                style="width: 100%"
+              /> </template
+          ></el-table-column>
+          <el-table-column label="操作" width="100" align="center">
+            <template #default="scope"
+              ><el-button type="primary" link @click="removeRow('analysis', scope.$index)">删除</el-button></template
+            >
+          </el-table-column>
+        </el-table>
+
           <div class="form-grid mt-20">
           <div class="form-grid mt-20">
-            <el-form-item label="作业内容" prop="space.operationContent" class="span-full"
-              ><el-input size="large" v-model="formValue.space.operationContent" type="textarea"
-            /></el-form-item>
-            <el-form-item label="危害辨识" prop="space.hazardIdentification" class="span-full"
-              ><el-input size="large" v-model="formValue.space.hazardIdentification" type="textarea"
-            /></el-form-item>
-            <el-form-item label="作业附件" class="span-full"
-              ><UploadFiles
-                label="上传附件"
-                @upload-success="(l) => handleUpload('space', 'attachment', l)"
-                :fileList="listMap['space.attachment']"
-            /></el-form-item>
+            
           </div>
           </div>
         </template>
         </template>
 
 
         <template v-else-if="formValue.hazardOperationType === 2">
         <template v-else-if="formValue.hazardOperationType === 2">
           <div class="section-title">高处作业详情</div>
           <div class="section-title">高处作业详情</div>
-          <div class="form-grid">
+          <div class="form-grid" style="width:50%">
+
             <el-form-item label="作业地点" prop="highAltitude.operationLocation"
             <el-form-item label="作业地点" prop="highAltitude.operationLocation"
-              ><el-input size="large" v-model="formValue.highAltitude.operationLocation"
-            /></el-form-item>
-            <el-form-item label="作业单位" prop="highAltitude.operationUnit"
-              ><el-input size="large" v-model="formValue.highAltitude.operationUnit"
-            /></el-form-item>
-            <el-form-item label="作业高度(m)" prop="highAltitude.operationHeight"
-              ><el-input-number
-                size="large"
-                v-model="formValue.highAltitude.operationHeight"
-                class="w-100"
-                :controls="false"
-            /></el-form-item>
-            <el-form-item label="作业类别" prop="highAltitude.operationType"
-              ><el-input size="large" v-model="formValue.highAltitude.operationType" placeholder="如:悬挂作业"
-            /></el-form-item>
-            <el-form-item label="作业人姓名" prop="highAltitude.operatorName"
-              ><el-input size="large" v-model="formValue.highAltitude.operatorName"
+              ><el-input size="large" placeholder="输入作业地点" v-model="formValue.highAltitude.operationLocation"
             /></el-form-item>
             /></el-form-item>
-            <el-form-item label="监护人" prop="highAltitude.supervisor"
-              ><el-input size="large" v-model="formValue.highAltitude.supervisor"
-            /></el-form-item>
-            <el-form-item label="开始时间" prop="highAltitude.operationStartTime"
+            <el-form-item label="作业开始时间" prop="highAltitude.operationStartTime"
               ><el-date-picker
               ><el-date-picker
                 size="large"
                 size="large"
                 v-model="formValue.highAltitude.operationStartTime"
                 v-model="formValue.highAltitude.operationStartTime"
                 value-format="YYYY-MM-DD"
                 value-format="YYYY-MM-DD"
-                class="w-100"
+                placeholder="作业开始时间"
+                style="width:100%"
             /></el-form-item>
             /></el-form-item>
-            <el-form-item label="结束时间" prop="highAltitude.operationEndTime"
+            <el-form-item label="作业结束时间" prop="highAltitude.operationEndTime"
               ><el-date-picker
               ><el-date-picker
                 size="large"
                 size="large"
                 v-model="formValue.highAltitude.operationEndTime"
                 v-model="formValue.highAltitude.operationEndTime"
                 value-format="YYYY-MM-DD"
                 value-format="YYYY-MM-DD"
-                class="w-100"
+                placeholder="作业结束时间"
+                style="width:100%"
             /></el-form-item>
             /></el-form-item>
             <el-form-item label="作业内容" prop="highAltitude.operationContent" class="span-full"
             <el-form-item label="作业内容" prop="highAltitude.operationContent" class="span-full"
-              ><el-input size="large" v-model="formValue.highAltitude.operationContent" type="textarea"
+              ><el-input size="large" placeholder="输入作业内容" v-model="formValue.highAltitude.operationContent" type="textarea"
+            /></el-form-item>
+
+            <el-form-item label="作业高度" prop="highAltitude.operationHeight"
+              ><el-input-number
+                size="large"
+                placeholder="输入作业高度"
+                v-model="formValue.highAltitude.operationHeight"
+                style="width:100%"
+                :controls="false"
+            /></el-form-item>
+
+            <el-form-item label="作业单位" prop="highAltitude.operationUnit"
+              ><el-input size="large" placeholder="输入作业单位" v-model="formValue.highAltitude.operationUnit"
+            /></el-form-item>
+            
+            <el-form-item label="作业类别" prop="highAltitude.operationType"
+              ><el-input size="large" v-model="formValue.highAltitude.operationType" placeholder="输入作业类别"
+            /></el-form-item>
+            <el-form-item label="作业人" prop="highAltitude.operatorName"
+              ><el-input size="large" placeholder="输入作业人" v-model="formValue.highAltitude.operatorName"
+            /></el-form-item>
+            <el-form-item label="监护人" prop="highAltitude.supervisor"
+              ><el-input size="large" placeholder="输入监护人" v-model="formValue.highAltitude.supervisor"
+            /></el-form-item>
+            <el-form-item label="涉及其它特殊作业" prop="highAltitude.operatorJob"
+              ><el-input size="large" placeholder="输入涉及其它特殊作业" v-model="formValue.highAltitude.operatorJob"
             /></el-form-item>
             /></el-form-item>
             <el-form-item label="危害辨识" prop="highAltitude.hazardIdentification" class="span-full"
             <el-form-item label="危害辨识" prop="highAltitude.hazardIdentification" class="span-full"
-              ><el-input size="large" v-model="formValue.highAltitude.hazardIdentification" type="textarea"
+              ><el-input size="large" placeholder="输入危害辨识" v-model="formValue.highAltitude.hazardIdentification" type="textarea"
             /></el-form-item>
             /></el-form-item>
-            <el-form-item label="作业附件" class="span-full"
+            <el-form-item label="作业附件" class="span-full" prop="highAltitude.attachment"
               ><UploadFiles
               ><UploadFiles
                 label="上传附件"
                 label="上传附件"
                 @upload-success="(l) => handleUpload('highAltitude', 'attachment', l)"
                 @upload-success="(l) => handleUpload('highAltitude', 'attachment', l)"
@@ -196,42 +245,54 @@
 
 
         <template v-else-if="formValue.hazardOperationType === 3">
         <template v-else-if="formValue.hazardOperationType === 3">
           <div class="section-title">临时用电详情</div>
           <div class="section-title">临时用电详情</div>
-          <div class="form-grid">
-            <el-form-item label="需求部门" prop="electricityList.requestDepartment"
-              ><el-input size="large" v-model="formValue.electricityList.requestDepartment"
+          <div class="form-grid" style="width:50%">
+            <el-form-item label="需求部门/IPT团队" prop="electricityList.requestDepartment"
+              ><el-input size="large" placeholder="输入需求部门/IPT团队" v-model="formValue.electricityList.requestDepartment"
             /></el-form-item>
             /></el-form-item>
-            <el-form-item label="用电类型" prop="electricityList.electricityType">
+            <el-form-item label="接用电性质" prop="electricityList.electricityType">
               <el-select v-model="formValue.electricityList.electricityType" class="w-100">
               <el-select v-model="formValue.electricityList.electricityType" class="w-100">
-                <el-option :value="1" label="长期" /><el-option :value="2" label="临时" />
+                <el-option :value="1" label="长期" />
+                <el-option :value="2" label="临时" />
               </el-select>
               </el-select>
             </el-form-item>
             </el-form-item>
-            <el-form-item label="责任人" prop="electricityList.contactPerson"
-              ><el-input size="large" v-model="formValue.electricityList.contactPerson"
-            /></el-form-item>
-            <el-form-item label="设备功率" prop="electricityList.equipmentPower"
-              ><el-input size="large" v-model="formValue.electricityList.equipmentPower"
-            /></el-form-item>
-            <el-form-item label="开始时间" prop="electricityList.operationStartTime"
+            <el-form-item label="作业开始时间" prop="electricityList.operationStartTime"
               ><el-date-picker
               ><el-date-picker
                 size="large"
                 size="large"
+                placeholder="作业开始时间"
                 v-model="formValue.electricityList.operationStartTime"
                 v-model="formValue.electricityList.operationStartTime"
                 value-format="YYYY-MM-DD"
                 value-format="YYYY-MM-DD"
                 class="w-100"
                 class="w-100"
             /></el-form-item>
             /></el-form-item>
-            <el-form-item label="结束时间" prop="electricityList.operationEndTime"
+            <el-form-item label="作业结束时间" prop="electricityList.operationEndTime"
               ><el-date-picker
               ><el-date-picker
                 size="large"
                 size="large"
+                placeholder="作业结束时间"
                 v-model="formValue.electricityList.operationEndTime"
                 v-model="formValue.electricityList.operationEndTime"
                 value-format="YYYY-MM-DD"
                 value-format="YYYY-MM-DD"
                 class="w-100"
                 class="w-100"
             /></el-form-item>
             /></el-form-item>
+            <el-form-item label="事由" prop="electricityList.reason" class="span-full"
+              ><el-input size="large" placeholder="输入事由" v-model="formValue.electricityList.reason" type="textarea" rows="3" show-word-limit maxlength="300" 
+            /></el-form-item>
+            <el-form-item label="责任人及联系方式" prop="electricityList.contactPerson"
+              ><el-input size="large" placeholder="输入责任人及联系方式" v-model="formValue.electricityList.contactPerson" type="textarea" rows="3" show-word-limit maxlength="300" 
+            /></el-form-item>
+            <el-form-item label="设备及功率" prop="electricityList.equipmentPower"
+              ><el-input size="large" placeholder="输入设备及功率" v-model="formValue.electricityList.equipmentPower" type="textarea" rows="3" show-word-limit maxlength="300" 
+            /></el-form-item>
+            
             <el-form-item label="保护措施" prop="electricityList.safety" class="span-full"
             <el-form-item label="保护措施" prop="electricityList.safety" class="span-full"
-              ><el-input size="large" v-model="formValue.electricityList.safety"
+              ><el-input size="large" placeholder="输入保护措施" v-model="formValue.electricityList.safety" type="textarea" rows="3" show-word-limit maxlength="300" 
             /></el-form-item>
             /></el-form-item>
-            <el-form-item label="用电事由" prop="electricityList.reason" class="span-full"
-              ><el-input size="large" v-model="formValue.electricityList.reason" type="textarea"
+            
+            <el-form-item label="需求部门负责人" prop="electricityList.deptManager" class="span-full"
+              ><el-input size="large" placeholder="输入需求部门负责人" v-model="formValue.electricityList.deptManager" 
             /></el-form-item>
             /></el-form-item>
-            <el-form-item label="申请附件" class="span-full"
+
+            <el-form-item label="建设管理部负责人" prop="electricityList.constructionManager" class="span-full"
+              ><el-input size="large" placeholder="输入建设管理部负责人" v-model="formValue.electricityList.constructionManager" 
+            /></el-form-item>
+            <el-form-item label="申请附件" class="span-full" prop="electricityList.attachment"
               ><UploadFiles
               ><UploadFiles
                 label="上传附件"
                 label="上传附件"
                 @upload-success="(l) => handleUpload('electricityList', 'attachment', l)"
                 @upload-success="(l) => handleUpload('electricityList', 'attachment', l)"
@@ -242,120 +303,131 @@
 
 
         <template v-else-if="formValue.hazardOperationType === 4">
         <template v-else-if="formValue.hazardOperationType === 4">
           <div class="section-title">动火作业详情</div>
           <div class="section-title">动火作业详情</div>
-          <div class="sub-label">A. 动火任务信息</div>
-          <div class="form-grid">
-            <el-form-item label="动火地点" prop="hot.hotWorkLocation"
-              ><el-input size="large" v-model="formValue.hot.hotWorkLocation"
+          <div class="form-grid" style="width:50%">
+            <el-form-item label="动火作业地点" prop="hot.hotWorkLocation"
+              ><el-input size="large" placeholder="输入动火作业地点" v-model="formValue.hot.hotWorkLocation"
             /></el-form-item>
             /></el-form-item>
             <el-form-item label="动火级别" prop="hot.hotWorkLevel">
             <el-form-item label="动火级别" prop="hot.hotWorkLevel">
-              <el-select v-model="formValue.hot.hotWorkLevel" class="w-100">
-                <el-option :value="1" label="一级" /><el-option :value="2" label="二级" /><el-option
-                  :value="3"
-                  label="三级"
-                />
+              <el-select v-model="formValue.hot.hotWorkLevel" class="w-100" >
+                <el-option :value="1" label="一级" />
+                <el-option :value="2" label="二级" />
+                <el-option :value="3" label="三级" />
               </el-select>
               </el-select>
             </el-form-item>
             </el-form-item>
-            <el-form-item label="特殊时段" prop="hot.isSpecialPeriod">
+            <el-form-item label="是否节假日、重大活动及公司启动一级响应期间" prop="hot.isSpecialPeriod">
               <el-radio-group v-model="formValue.hot.isSpecialPeriod">
               <el-radio-group v-model="formValue.hot.isSpecialPeriod">
-                <el-radio :label="1">是 (节假日/重大活动)</el-radio>
-                <el-radio :label="0">否</el-radio>
+                <el-radio :value="1">是</el-radio>
+                <el-radio :value="0">否</el-radio>
               </el-radio-group>
               </el-radio-group>
             </el-form-item>
             </el-form-item>
-            <el-form-item label="动火类型" prop="hot.hotWorkType"
-              ><el-input size="large" v-model="formValue.hot.hotWorkType" placeholder="气焊/电焊/打磨等"
-            /></el-form-item>
-            <el-form-item label="开始时间" prop="hot.hotWorkStart"
+            <el-form-item label="动火时间起" prop="hot.hotWorkStart"
               ><el-date-picker
               ><el-date-picker
                 size="large"
                 size="large"
+                placeholder="输入动火时间起"
                 v-model="formValue.hot.hotWorkStart"
                 v-model="formValue.hot.hotWorkStart"
                 value-format="YYYY-MM-DD"
                 value-format="YYYY-MM-DD"
-                class="w-100"
+                style="width:100%"
             /></el-form-item>
             /></el-form-item>
-            <el-form-item label="结束时间" prop="hot.hotWorkEnd"
-              ><el-date-picker size="large" v-model="formValue.hot.hotWorkEnd" value-format="YYYY-MM-DD" class="w-100"
+            <el-form-item label="动火时间止" prop="hot.hotWorkEnd"
+              ><el-date-picker size="large" placeholder="动火时间止" v-model="formValue.hot.hotWorkEnd" value-format="YYYY-MM-DD" style="width:100%"
             /></el-form-item>
             /></el-form-item>
+
             <el-form-item label="动火任务" prop="hot.hotWorkTask" class="span-full"
             <el-form-item label="动火任务" prop="hot.hotWorkTask" class="span-full"
-              ><el-input size="large" v-model="formValue.hot.hotWorkTask" type="textarea"
+              ><el-input size="large" placeholder="输入动火任务" v-model="formValue.hot.hotWorkTask" 
             /></el-form-item>
             /></el-form-item>
-            <el-form-item label="危险性分析" prop="hot.hazardAnalysis" class="span-full"
-              ><el-input size="large" v-model="formValue.hot.hazardAnalysis" type="textarea"
+
+            <el-form-item label="动火类型" prop="hot.hotWorkType"
+              ><el-input size="large" v-model="formValue.hot.hotWorkType" placeholder="输入动火类型"
             /></el-form-item>
             /></el-form-item>
-          </div>
 
 
-          <div class="sub-label">B. 责任人信息</div>
-          <div class="form-grid">
             <el-form-item label="动火作业人员" prop="hot.hotWorkman"
             <el-form-item label="动火作业人员" prop="hot.hotWorkman"
-              ><el-input size="large" v-model="formValue.hot.hotWorkman"
+              ><el-input size="large" placeholder="输入动火作业人员" v-model="formValue.hot.hotWorkman"
+            /></el-form-item>
+
+            <el-form-item label="动火人联系电话" prop="hot.hotWorkContact"
+              ><el-input size="large" placeholder="输入动火人联系电话" v-model="formValue.hot.hotWorkContact"
             /></el-form-item>
             /></el-form-item>
-            <el-form-item label="动火人电话" prop="hot.hotWorkContact"
-              ><el-input size="large" v-model="formValue.hot.hotWorkContact"
+
+            <el-form-item label="动火危险性分析" prop="hot.hazardAnalysis" class="span-full"
+              ><el-input size="large" placeholder="输入动火危险性分析" v-model="formValue.hot.hazardAnalysis"
             /></el-form-item>
             /></el-form-item>
-            <el-form-item label="施工单位监护人" prop="hot.constructionSupervisor"
-              ><el-input size="large" v-model="formValue.hot.constructionSupervisor"
+
+            <el-form-item label="消防安全防护措施" prop="hot.fireSafetyMeasures" class="span-full"
+              ><el-input size="large" placeholder="输入消防安全防护措施" v-model="formValue.hot.fireSafetyMeasures"
+            /></el-form-item>
+          </div>
+
+          <div class="form-grid" style="width:50%">
+            <el-form-item label="施工单位指定动火监护人" prop="hot.constructionSupervisor"
+              ><el-input size="large" placeholder="输入施工单位指定动火监护人"  v-model="formValue.hot.constructionSupervisor"
             /></el-form-item>
             /></el-form-item>
-            <el-form-item label="监护人电话" prop="hot.supervisorContact"
-              ><el-input size="large" v-model="formValue.hot.supervisorContact"
+            <el-form-item label="施工单位指定动火监护人联系电话" prop="hot.supervisorContact"
+              ><el-input size="large" placeholder="输入施工单位指定动火监护人联系电话" v-model="formValue.hot.supervisorContact"
             /></el-form-item>
             /></el-form-item>
-            <el-form-item label="现场负责人" prop="hot.constructionSiteLeader"
-              ><el-input size="large" v-model="formValue.hot.constructionSiteLeader"
+            <el-form-item label="施工单位现场负责人" prop="hot.constructionSiteLeader"
+              ><el-input size="large" placeholder="输入施工单位现场负责人" v-model="formValue.hot.constructionSiteLeader"
             /></el-form-item>
             /></el-form-item>
-            <el-form-item label="教育人" prop="hot.constructionEducator"
-              ><el-input size="large" v-model="formValue.hot.constructionEducator"
+            <el-form-item label="施工单位教育人" prop="hot.constructionEducator"
+              ><el-input size="large" placeholder="输入施工单位教育人" v-model="formValue.hot.constructionEducator"
             /></el-form-item>
             /></el-form-item>
-            <el-form-item label="申请部门监护人" prop="hot.hotWorkSupervisor"
-              ><el-input size="large" v-model="formValue.hot.hotWorkSupervisor"
+            <el-form-item label="申请部门指定动火监护人" prop="hot.hotWorkSupervisor"
+              ><el-input size="large" placeholder="输入申请部门指定动火监护人" v-model="formValue.hot.hotWorkSupervisor"
             /></el-form-item>
             /></el-form-item>
-            <el-form-item label="部门监护电话" prop="hot.supervisorNumber"
-              ><el-input size="large" v-model="formValue.hot.supervisorNumber"
+            <el-form-item label="申请部门指定动火监护人联系电话" prop="hot.supervisorNumber"
+              ><el-input size="large" placeholder="输入申请部门指定动火监护人联系电话" v-model="formValue.hot.supervisorNumber"
             /></el-form-item>
             /></el-form-item>
           </div>
           </div>
 
 
-          <div class="sub-label">C. 防护措施与附件</div>
-          <div class="form-grid">
-            <el-form-item label="安全防护措施" prop="hot.fireSafetyMeasures" class="span-full"
-              ><el-input size="large" v-model="formValue.hot.fireSafetyMeasures" type="textarea"
-            /></el-form-item>
-            <el-form-item label="现场检查情况" prop="hot.supervisorMeasures" class="span-full"
-              ><el-input size="large" v-model="formValue.hot.supervisorMeasures" type="textarea"
+          <div class="form-grid" style="width:50%">
+            <el-form-item label="动火操作现场防护措施及检查情况" prop="hot.supervisorMeasures" class="span-full"
+              ><el-input size="large" placeholder="输入动火操作现场防护措施及检查情况" v-model="formValue.hot.supervisorMeasures" type="textarea"
             /></el-form-item>
             /></el-form-item>
 
 
-            <el-form-item label="动火现场照片"
+            <el-form-item label="动火现场检查照片" prop="hot.photos"
               ><UploadFiles
               ><UploadFiles
                 label="上传附件"
                 label="上传附件"
                 @upload-success="(l) => handleUpload('hot', 'photos', l)"
                 @upload-success="(l) => handleUpload('hot', 'photos', l)"
                 :fileList="listMap['hot.photos']"
                 :fileList="listMap['hot.photos']"
             /></el-form-item>
             /></el-form-item>
-            <el-form-item label="身份证复印件"
+            <el-form-item label="身份证复印件" prop="hot.idCard"
               ><UploadFiles
               ><UploadFiles
                 label="上传附件"
                 label="上传附件"
                 @upload-success="(l) => handleUpload('hot', 'idCard', l)"
                 @upload-success="(l) => handleUpload('hot', 'idCard', l)"
                 :fileList="listMap['hot.idCard']"
                 :fileList="listMap['hot.idCard']"
             /></el-form-item>
             /></el-form-item>
-            <el-form-item label="特种作业证"
+            <el-form-item label="动火人特种作业操作复印件" prop="hot.optionCard"
               ><UploadFiles
               ><UploadFiles
                 label="上传附件"
                 label="上传附件"
                 @upload-success="(l) => handleUpload('hot', 'optionCard', l)"
                 @upload-success="(l) => handleUpload('hot', 'optionCard', l)"
                 :fileList="listMap['hot.optionCard']"
                 :fileList="listMap['hot.optionCard']"
             /></el-form-item>
             /></el-form-item>
-            <el-form-item label="安全教育记录"
+            <el-form-item label="动火安全教育记录" prop="hot.safetyEducationPlan"
               ><UploadFiles
               ><UploadFiles
                 label="上传附件"
                 label="上传附件"
                 @upload-success="(l) => handleUpload('hot', 'safetyEducationPlan', l)"
                 @upload-success="(l) => handleUpload('hot', 'safetyEducationPlan', l)"
                 :fileList="listMap['hot.safetyEducationPlan']"
                 :fileList="listMap['hot.safetyEducationPlan']"
             /></el-form-item>
             /></el-form-item>
-            <el-form-item label="施工方案"
+            <el-form-item label="动火作业施工方案" prop="hot.constructionPlan"
               ><UploadFiles
               ><UploadFiles
                 label="上传附件"
                 label="上传附件"
                 @upload-success="(l) => handleUpload('hot', 'constructionPlan', l)"
                 @upload-success="(l) => handleUpload('hot', 'constructionPlan', l)"
                 :fileList="listMap['hot.constructionPlan']"
                 :fileList="listMap['hot.constructionPlan']"
             /></el-form-item>
             /></el-form-item>
-            <el-form-item label="准备工作照片"
+            <el-form-item label="动火作业场所准备照片" prop="hot.preparationPhotos"
               ><UploadFiles
               ><UploadFiles
                 label="上传附件"
                 label="上传附件"
                 @upload-success="(l) => handleUpload('hot', 'preparationPhotos', l)"
                 @upload-success="(l) => handleUpload('hot', 'preparationPhotos', l)"
                 :fileList="listMap['hot.preparationPhotos']"
                 :fileList="listMap['hot.preparationPhotos']"
             /></el-form-item>
             /></el-form-item>
-            <el-form-item label="管理协议"
+
+            <el-form-item label="特种行业操作证网上查询情况照片" prop="hot.operationCertificates"
+              ><UploadFiles
+                label="上传附件"
+                @upload-success="(l) => handleUpload('hot', 'operationCertificates', l)"
+                :fileList="listMap['hot.operationCertificates']"
+            /></el-form-item>
+
+            <el-form-item label="动火作业安全管理协议" prop="hot.safetyManagementAgreement"
               ><UploadFiles
               ><UploadFiles
                 label="上传附件"
                 label="上传附件"
                 @upload-success="(l) => handleUpload('hot', 'safetyManagementAgreement', l)"
                 @upload-success="(l) => handleUpload('hot', 'safetyManagementAgreement', l)"
@@ -365,60 +437,26 @@
         </template>
         </template>
 
 
         <div class="form-line-divider"></div>
         <div class="form-line-divider"></div>
-
-        <div class="section-title-flex">
-          <span class="is-required-manual">安全措施清单</span>
-          <el-button type="primary" @click="addRow('measure')">+ 新增措施</el-button>
-        </div>
-        <el-table :data="formValue.measure" border class="mb-20">
-          <el-table-column label="序号" prop="serialNumber" width="100" align="center" />
-          <el-table-column label="措施内容"
-            ><template #default="scope"><el-input v-model="scope.row.safetyMeasure" /></template
-          ></el-table-column>
-          <el-table-column label="确认人" width="200"
-            ><template #default="scope"><el-input v-model="scope.row.confirmer" /></template
-          ></el-table-column>
-          <el-table-column label="操作" width="80" align="center">
-            <template #default="scope"
-              ><el-button type="primary" link @click="removeRow('measure', scope.$index)">删除</el-button></template
-            >
-          </el-table-column>
-        </el-table>
-
-        <div class="section-title-flex">
-          <span class="is-required-manual">危害分析记录</span>
-          <el-button type="primary" @click="addRow('analysis')">+ 新增记录</el-button>
+        <div v-if="formValue.hazardOperationType < 3">
+            <div class="section-title-flex">
+            <span class="is-required-manual">安全措施</span>
+            <el-button type="primary" @click="addRow('measure')">+ 新增措施</el-button>
+            </div>
+            <el-table :data="formValue.measure" border class="mb-20">
+            <el-table-column label="序号" prop="serialNumber" width="100" align="center" />
+            <el-table-column label="安全措施"
+                ><template #default="scope"><el-input placeholder="输入安全措施" v-model="scope.row.safetyMeasure" /></template
+            ></el-table-column>
+            <el-table-column label="确认人" width="200"
+                ><template #default="scope"><el-input placeholder="输入确认人" v-model="scope.row.confirmer" /></template
+            ></el-table-column>
+            <el-table-column label="操作" width="100" align="center">
+                <template #default="scope"
+                ><el-button type="primary" link @click="removeRow('measure', scope.$index)">删除</el-button></template
+                >
+            </el-table-column>
+            </el-table>
         </div>
         </div>
-        <el-table :data="formValue.analysis" border>
-          <el-table-column label="检测部位"
-            ><template #default="scope"><el-input v-model="scope.row.analysisPosition" /></template
-          ></el-table-column>
-          <el-table-column label="有毒物质及浓度"
-            ><template #default="scope"><el-input v-model="scope.row.toxicSubstance" /></template
-          ></el-table-column>
-          <el-table-column label="可燃气及浓度"
-            ><template #default="scope"><el-input v-model="scope.row.flammableGas" /></template
-          ></el-table-column>
-          <el-table-column label="氧含量"
-            ><template #default="scope"><el-input v-model="scope.row.oxygenContent" /></template
-          ></el-table-column>
-          <el-table-column label="检测人" width="130"
-            ><template #default="scope"><el-input v-model="scope.row.analyst" /></template
-          ></el-table-column>
-          <el-table-column label="检测时间" width="220"
-            ><template #default="scope">
-              <el-date-picker
-                v-model="scope.row.analysisTime"
-                value-format="YYYY-MM-DD"
-                style="width: 100%"
-              /> </template
-          ></el-table-column>
-          <el-table-column label="操作" width="80" align="center">
-            <template #default="scope"
-              ><el-button type="primary" link @click="removeRow('analysis', scope.$index)">删除</el-button></template
-            >
-          </el-table-column>
-        </el-table>
       </el-form>
       </el-form>
     </main>
     </main>
 
 
@@ -428,20 +466,23 @@
     </footer>
     </footer>
   </div>
   </div>
   <el-dialog v-model="hotWorkDialogVisible" title="">
   <el-dialog v-model="hotWorkDialogVisible" title="">
-    <div
+    <div class="hotWorkDialog"
       v-html="
       v-html="
-        `备注1:
-    1.【重要】申请部门联络人手机号需与企业微信中登记的手机号一致,系統根据申请部门联络人手机号推送审批单及相关信息。
-    2.一级动火,由动火部门申请,须由院消防安全麦任人南批;二级动火,由动火都门申清,须由消防安全分管院领导南批;三级动火,由动火部门申请,须由消防安全管理部门领导南批。
-    3.申请动火时需提供动火地点具体位置的照片,否则不子以办理动火证。
-    4,一级动火区域为:一级危险点、油库、燃油试验室、燃气区域等高危场所;二级动火区域为:二级危险点、35KV变电站、高处作业场所、试验场所、仓库。堆场、待建区等;三级动火区域为:三级危险点、10KV交电站、空压机房、办公室、室外区域(除待建区外)
-    等。 备注2: 1.填写动火开始时间及截止时间,一级动火和二级动火有效期不应超过1天,三级动火有效期不应超过6天:
-    2.动火作业需提前三天开始申请;
-    3.申请部门完成申请后,将动火作业表打印纸质版本及动火申请材料放置于动火现场,消防值班人员将进行现场检查,现场若无紙质动火作业表及动火申请材料不予动火。
-    备注3: 1,电煌 气割,严格道守“十不烧”规程操作: 2.操作前检查动火人员的工具、电焊机、电源开关及线路是否良好;
-    3.注意安全用电,检查电线是否有乱拖乱拉现象,电源线是否架空扎车; 4.检查人员在动火期间不得离开现场,应当留下监护, 5.
-    动火结束后,督促动火人员清理现场,不得留下残渣; 6.现场配备灭火器: 7.现场专人看护, 8.清理周边易燃物:
-    9.现场动火人员持证上岗;`
+        `<p style='margin-bottom:10px'>备注1:</p>
+    <p style='margin-bottom:10px'>1.【重要】申请部门联络人手机号需与企业微信中登记的手机号一致,系統根据申请部门联络人手机号推送审批单及相关信息。</p>
+    <p style='margin-bottom:10px'>2.一级动火,由动火部门申请,须由院消防安全麦任人南批;二级动火,由动火都门申清,须由消防安全分管院领导南批;三级动火,由动火部门申请,须由消防安全管理部门领导南批。</p>
+    <p style='margin-bottom:10px'>3.申请动火时需提供动火地点具体位置的照片,否则不子以办理动火证。</p>
+    <p style='margin-bottom:10px'>4.一级动火区域为:一级危险点、油库、燃油试验室、燃气区域等高危场所;二级动火区域为:二级危险点、35KV变电站、高处作业场所、试验场所、仓库。堆场、待建区等;三级动火区域为:三级危险点、10KV交电站、空压机房、办公室、室外区域(除待建区外)
+    等。 </p>
+    <p style='margin-bottom:10px'>备注2:</p>
+    <p style='margin-bottom:10px'>1.填写动火开始时间及截止时间,一级动火和二级动火有效期不应超过1天,三级动火有效期不应超过6天:</p>
+    <p style='margin-bottom:10px'>2.动火作业需提前三天开始申请;</p>
+    <p style='margin-bottom:10px'>3.申请部门完成申请后,将动火作业表打印纸质版本及动火申请材料放置于动火现场,消防值班人员将进行现场检查,现场若无紙质动火作业表及动火申请材料不予动火。</p>
+    <p style='margin-bottom:10px'>备注3:</p>
+    <p style='margin-bottom:10px'>1,电煌 气割,严格道守“十不烧”规程操作: 2.操作前检查动火人员的工具、电焊机、电源开关及线路是否良好;</p>
+    <p style='margin-bottom:10px'>3.注意安全用电,检查电线是否有乱拖乱拉现象,电源线是否架空扎车; 4.检查人员在动火期间不得离开现场,应当留下监护, 5.
+    动火结束后,督促动火人员清理现场,不得留下残渣; 6.现场配备灭火器: 7.现场专人看护, 8.清理周边易燃物;</p>
+    <p style='margin-bottom:10px'>9.现场动火人员持证上岗;</p>`
       "
       "
     ></div>
     ></div>
     <template #footer>
     <template #footer>
@@ -489,6 +530,7 @@
     'hot.safetyEducationPlan': [],
     'hot.safetyEducationPlan': [],
     'hot.constructionPlan': [],
     'hot.constructionPlan': [],
     'hot.preparationPhotos': [],
     'hot.preparationPhotos': [],
+    'hot.operationCertificates': [],
     'hot.safetyManagementAgreement': [],
     'hot.safetyManagementAgreement': [],
   });
   });
 
 
@@ -540,6 +582,8 @@
       contactPerson: '',
       contactPerson: '',
       equipmentPower: '',
       equipmentPower: '',
       safety: '',
       safety: '',
+      deptManager: '',
+      constructionManager: '',
       attachment: '',
       attachment: '',
     },
     },
     hot: {
     hot: {
@@ -567,6 +611,7 @@
       safetyEducationPlan: '',
       safetyEducationPlan: '',
       constructionPlan: '',
       constructionPlan: '',
       preparationPhotos: '',
       preparationPhotos: '',
+      operationCertificates: '',
       safetyManagementAgreement: '',
       safetyManagementAgreement: '',
     },
     },
     measure: [{ serialNumber: 1, safetyMeasure: '', confirmer: '' }],
     measure: [{ serialNumber: 1, safetyMeasure: '', confirmer: '' }],
@@ -597,6 +642,7 @@
     'space.operationEndTime': [r],
     'space.operationEndTime': [r],
     'space.operationContent': [r],
     'space.operationContent': [r],
     'space.hazardIdentification': [r],
     'space.hazardIdentification': [r],
+    'space.attachment':[r],
     // 高处作业
     // 高处作业
     'highAltitude.operationLocation': [r],
     'highAltitude.operationLocation': [r],
     'highAltitude.operationUnit': [r],
     'highAltitude.operationUnit': [r],
@@ -608,6 +654,8 @@
     'highAltitude.operationEndTime': [r],
     'highAltitude.operationEndTime': [r],
     'highAltitude.operationContent': [r],
     'highAltitude.operationContent': [r],
     'highAltitude.hazardIdentification': [r],
     'highAltitude.hazardIdentification': [r],
+    'highAltitude.operatorJob':[r],
+    'highAltitude.attachment':[r],
     // 临时用电
     // 临时用电
     'electricityList.requestDepartment': [r],
     'electricityList.requestDepartment': [r],
     'electricityList.electricityType': [r],
     'electricityList.electricityType': [r],
@@ -616,10 +664,14 @@
     'electricityList.operationStartTime': [r],
     'electricityList.operationStartTime': [r],
     'electricityList.operationEndTime': [r],
     'electricityList.operationEndTime': [r],
     'electricityList.safety': [r],
     'electricityList.safety': [r],
+    'electricityList.deptManager': [r],
+    'electricityList.constructionManager':[r],
     'electricityList.reason': [r],
     'electricityList.reason': [r],
+    'electricityList.attachment': [r],
     // 动火作业
     // 动火作业
     'hot.hotWorkLocation': [r],
     'hot.hotWorkLocation': [r],
     'hot.hotWorkLevel': [r],
     'hot.hotWorkLevel': [r],
+    'hot.isSpecialPeriod':[r],
     'hot.hotWorkType': [r],
     'hot.hotWorkType': [r],
     'hot.hotWorkStart': [r],
     'hot.hotWorkStart': [r],
     'hot.hotWorkEnd': [r],
     'hot.hotWorkEnd': [r],
@@ -635,6 +687,15 @@
     'hot.hazardAnalysis': [r],
     'hot.hazardAnalysis': [r],
     'hot.fireSafetyMeasures': [r],
     'hot.fireSafetyMeasures': [r],
     'hot.supervisorMeasures': [r],
     'hot.supervisorMeasures': [r],
+    // 动火附件
+    'hot.photos': [r],
+    'hot.idCard': [r],
+    'hot.optionCard': [r],
+    'hot.safetyEducationPlan': [r],
+    'hot.constructionPlan': [r],
+    'hot.preparationPhotos': [r],
+    'hot.operationCertificates': [r],
+    'hot.safetyManagementAgreement': [r],
   });
   });
   const handleChangeDept = () => {
   const handleChangeDept = () => {
     const deptInfo = cascaderRef.value?.getCheckedNodes();
     const deptInfo = cascaderRef.value?.getCheckedNodes();
@@ -651,6 +712,12 @@
       formValue[obj][key] = formatted.length > 0 ? JSON.stringify(formatted) : '';
       formValue[obj][key] = formatted.length > 0 ? JSON.stringify(formatted) : '';
     }
     }
   };
   };
+  // 选择动火作业
+  const handleHazardOperationType = (value)=>{
+    if(value===4) {
+        hotWorkDialogVisible.value = true
+    }
+  }
 
 
   const handleSave = () => {
   const handleSave = () => {
     formRef.value.validate((valid: boolean) => {
     formRef.value.validate((valid: boolean) => {
@@ -747,5 +814,8 @@
         font-weight: bold;
         font-weight: bold;
       }
       }
     }
     }
+    :deep(.el-input-number .el-input__inner){
+        text-align: left;
+    }
   }
   }
 </style>
 </style>

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

@@ -4,7 +4,7 @@
       <div class="breadcrumb-title"><BreadcrumbBack /> 编辑危险作业申请</div>
       <div class="breadcrumb-title"><BreadcrumbBack /> 编辑危险作业申请</div>
     </header>
     </header>
 
 
-    <main class="safety-platform-container__main">
+    <!-- <main class="safety-platform-container__main">
       <el-form ref="formRef" :model="formValue" :rules="rules" label-width="160px" label-position="right">
       <el-form ref="formRef" :model="formValue" :rules="rules" label-width="160px" label-position="right">
         <div class="section-title">基础信息</div>
         <div class="section-title">基础信息</div>
         <div class="form-grid">
         <div class="form-grid">
@@ -410,12 +410,495 @@
           </el-table-column>
           </el-table-column>
         </el-table>
         </el-table>
       </el-form>
       </el-form>
+    </main> -->
+
+    <main class="safety-platform-container__main">
+      <el-form ref="formRef" :model="formValue" :rules="rules" label-width="180px" label-position="right">
+        <div class="section-title">基础信息</div>
+        <div class="form-grid" style="width:50%">
+
+          <el-form-item label="申请单位" prop="applicationUnitName"
+            ><el-input size="large" placeholder="输入申请单位名称" v-model="formValue.applicationUnitName"
+          /></el-form-item>
+
+          <el-form-item label="申请人" prop="applicantName"
+            ><el-input size="large" placeholder="输入申请人" v-model="formValue.applicantName"
+          /></el-form-item>
+
+          <el-form-item label="申请部门" prop="applicationDepartment"
+            ><el-cascader
+              v-model="formValue.applicationDepartmentId"
+              size="large"
+              ref="cascaderRef"
+              :options="firstLevelDepts"
+              :props="cascaderProp"
+              :show-all-levels="false"
+              placeholder="请选择申请部门"
+              filterable
+              @change="handleChangeDept"
+              style="width: 100%"
+          /></el-form-item>
+
+          <el-form-item label="申请人电话" prop="applicantPhone"
+            ><el-input size="large" placeholder="输入申请人电话" v-model="formValue.applicantPhone"
+          /></el-form-item>
+
+          <el-form-item label="危险作业类别" prop="hazardOperationType">
+            <el-select size="large" v-model="formValue.hazardOperationType" @change="handleHazardOperationType" placeholder="选择危险作业类别">
+              <el-option :value="1" label="有限空间" />
+              <el-option :value="2" label="高处作业" />
+              <el-option :value="3" label="临时用电" />
+              <el-option :value="4" label="动火作业" />
+            </el-select>
+          </el-form-item>
+
+          <el-form-item label="审批流程" prop="templateId" class="span-full">
+            <el-select v-model="formValue.templateId" placeholder="请选择审批流程" size="large" clearable>
+              <el-option v-for="opt in approvalOptions" :key="opt.id" :label="opt.templateName" :value="opt.id" />
+            </el-select>
+          </el-form-item>
+
+          <!-- <el-form-item label="备注信息" prop="remark" class="span-full">
+            <el-input size="large" v-model="formValue.remark" type="textarea" :rows="2" placeholder="备注信息..." />
+          </el-form-item> -->
+        </div>
+
+        <div class="form-line-divider"></div>
+
+        <template v-if="formValue.hazardOperationType === 1">
+          <div class="section-title">有限空间作业详情</div>
+          <div class="form-grid" style="width:50%">
+            <el-form-item label="有限空间所属单位" prop="space.confinedSpaceUnit"
+              ><el-input size="large" placeholder="输入有限空间所属单位" v-model="formValue.space.confinedSpaceUnit"
+            /></el-form-item>
+            <el-form-item label="有限空间名称" prop="space.confinedSpaceName"
+              ><el-input size="large" placeholder="输入有限空间名称" v-model="formValue.space.confinedSpaceName"
+            /></el-form-item>
+
+            <el-form-item label="作业内容" prop="space.operationContent" class="span-full"
+              ><el-input size="large" placeholder="输入作业内容" v-model="formValue.space.operationContent" type="textarea"
+            /></el-form-item>
+
+            <el-form-item label="作业开始时间" prop="space.operationStartTime"
+              ><el-date-picker
+                size="large"
+                v-model="formValue.space.operationStartTime"
+                value-format="YYYY-MM-DD"
+                placeholder="作业开始时间"
+                style="width: 100%"
+            /></el-form-item>
+            <el-form-item label="作业结束时间" prop="space.operationEndTime"
+              ><el-date-picker
+                size="large"
+                v-model="formValue.space.operationEndTime"
+                placeholder="作业结束时间"
+                value-format="YYYY-MM-DD"
+                style="width: 100%"
+            /></el-form-item>
+
+            <el-form-item label="作业单位负责人" prop="space.unitResponsible"
+              ><el-input size="large" placeholder="输入作业单位负责人" v-model="formValue.space.unitResponsible"
+            /></el-form-item>
+            <el-form-item label="监护人" prop="space.supervisor"
+              ><el-input size="large" placeholder="输入监护人" v-model="formValue.space.supervisor"
+            /></el-form-item>
+            <el-form-item label="作业人" prop="space.operator"
+              ><el-input size="large" placeholder="输入作业人" v-model="formValue.space.operator"
+            /></el-form-item>
+            <el-form-item label="涉及其它特殊作业" prop="space.otherSpecialOps"
+              ><el-input size="large" placeholder="输入涉及其它特殊作业" v-model="formValue.space.otherSpecialOps"
+            /></el-form-item>
+
+            <el-form-item label="危害辨识" prop="space.hazardIdentification" class="span-full"
+              ><el-input size="large" placeholder="输入危害辨识" v-model="formValue.space.hazardIdentification" type="textarea"
+            /></el-form-item>
+            <el-form-item label="作业附件" class="span-full" prop="space.attachment"
+              ><UploadFiles
+                label="上传附件"
+                @upload-success="(l) => handleUpload('space', 'attachment', l)"
+                :fileList="listMap['space.attachment']"
+            /></el-form-item>
+          </div>
+
+          <div class="sub-group-box">
+            <div class="sub-label is-required-manual section-title-flex">项目分析-物质分析标准</div>
+            <el-table :data="[formValue.space]" border class="density-table" style="margin-bottom: 20px">
+              <el-table-column label="有毒有害介质">
+                <template #default="scope">
+                  <el-form-item prop="space.toxicHazardous" :rules="r" label-width="0" class="m-0"
+                    ><el-input v-model="scope.row.toxicHazardous"
+                  /></el-form-item>
+                </template>
+              </el-table-column>
+              <el-table-column label="可燃气">
+                <template #default="scope">
+                  <el-form-item prop="space.flammable" :rules="r" label-width="0" class="m-0"
+                    ><el-input v-model="scope.row.flammable"
+                  /></el-form-item>
+                </template>
+              </el-table-column>
+              <el-table-column label="氧含量">
+                <template #default="scope">
+                  <el-form-item prop="space.oxygenContent" :rules="r" label-width="0" class="m-0"
+                    ><el-input v-model="scope.row.oxygenContent"
+                  /></el-form-item>
+                </template>
+              </el-table-column>
+            </el-table>
+          </div>
+
+          <div class="section-title-flex">
+          <span class="is-required-manual">项目分析-危害分析记录</span>
+          <el-button type="primary" @click="addRow('analysis')">+ 新增记录</el-button>
+        </div>
+        <el-table :data="formValue.analysis" border>
+          <el-table-column label="有毒有害介质"
+            ><template #default="scope"><el-input v-model="scope.row.toxicSubstance" /></template
+          ></el-table-column>
+          <el-table-column label="可燃气"
+            ><template #default="scope"><el-input v-model="scope.row.flammableGas" /></template
+          ></el-table-column>
+          <el-table-column label="氧含量"
+            ><template #default="scope"><el-input v-model="scope.row.oxygenContent" /></template
+          ></el-table-column>
+          <el-table-column label="部位"
+            ><template #default="scope"><el-input v-model="scope.row.analysisPosition" /></template
+          ></el-table-column>
+          <el-table-column label="分析人" width="130"
+            ><template #default="scope"><el-input v-model="scope.row.analyst" /></template
+          ></el-table-column>
+          <el-table-column label="时间" width="220"
+            ><template #default="scope">
+              <el-date-picker
+                v-model="scope.row.analysisTime"
+                value-format="YYYY-MM-DD"
+                style="width: 100%"
+              /> </template
+          ></el-table-column>
+          <el-table-column label="操作" width="100" align="center">
+            <template #default="scope"
+              ><el-button type="primary" link @click="removeRow('analysis', scope.$index)">删除</el-button></template
+            >
+          </el-table-column>
+        </el-table>
+
+          <div class="form-grid mt-20">
+            
+          </div>
+        </template>
+
+        <template v-else-if="formValue.hazardOperationType === 2">
+          <div class="section-title">高处作业详情</div>
+          <div class="form-grid" style="width:50%">
+
+            <el-form-item label="作业地点" prop="highAltitude.operationLocation"
+              ><el-input size="large" placeholder="输入作业地点" v-model="formValue.highAltitude.operationLocation"
+            /></el-form-item>
+            <el-form-item label="作业开始时间" prop="highAltitude.operationStartTime"
+              ><el-date-picker
+                size="large"
+                v-model="formValue.highAltitude.operationStartTime"
+                value-format="YYYY-MM-DD"
+                placeholder="作业开始时间"
+                style="width:100%"
+            /></el-form-item>
+            <el-form-item label="作业结束时间" prop="highAltitude.operationEndTime"
+              ><el-date-picker
+                size="large"
+                v-model="formValue.highAltitude.operationEndTime"
+                value-format="YYYY-MM-DD"
+                placeholder="作业结束时间"
+                style="width:100%"
+            /></el-form-item>
+            <el-form-item label="作业内容" prop="highAltitude.operationContent" class="span-full"
+              ><el-input size="large" placeholder="输入作业内容" v-model="formValue.highAltitude.operationContent" type="textarea"
+            /></el-form-item>
+
+            <el-form-item label="作业高度" prop="highAltitude.operationHeight"
+              ><el-input-number
+                size="large"
+                placeholder="输入作业高度"
+                v-model="formValue.highAltitude.operationHeight"
+                style="width:100%"
+                :controls="false"
+            /></el-form-item>
+
+            <el-form-item label="作业单位" prop="highAltitude.operationUnit"
+              ><el-input size="large" placeholder="输入作业单位" v-model="formValue.highAltitude.operationUnit"
+            /></el-form-item>
+            
+            <el-form-item label="作业类别" prop="highAltitude.operationType"
+              ><el-input size="large" v-model="formValue.highAltitude.operationType" placeholder="输入作业类别"
+            /></el-form-item>
+            <el-form-item label="作业人" prop="highAltitude.operatorName"
+              ><el-input size="large" placeholder="输入作业人" v-model="formValue.highAltitude.operatorName"
+            /></el-form-item>
+            <el-form-item label="监护人" prop="highAltitude.supervisor"
+              ><el-input size="large" placeholder="输入监护人" v-model="formValue.highAltitude.supervisor"
+            /></el-form-item>
+            <el-form-item label="涉及其它特殊作业" prop="highAltitude.operatorJob"
+              ><el-input size="large" placeholder="输入涉及其它特殊作业" v-model="formValue.highAltitude.operatorJob"
+            /></el-form-item>
+            <el-form-item label="危害辨识" prop="highAltitude.hazardIdentification" class="span-full"
+              ><el-input size="large" placeholder="输入危害辨识" v-model="formValue.highAltitude.hazardIdentification" type="textarea"
+            /></el-form-item>
+            <el-form-item label="作业附件" class="span-full" prop="highAltitude.attachment"
+              ><UploadFiles
+                label="上传附件"
+                @upload-success="(l) => handleUpload('highAltitude', 'attachment', l)"
+                :fileList="listMap['highAltitude.attachment']"
+            /></el-form-item>
+          </div>
+        </template>
+
+        <template v-else-if="formValue.hazardOperationType === 3">
+          <div class="section-title">临时用电详情</div>
+          <div class="form-grid" style="width:50%">
+            <el-form-item label="需求部门/IPT团队" prop="electricityList.requestDepartment"
+              ><el-input size="large" placeholder="输入需求部门/IPT团队" v-model="formValue.electricityList.requestDepartment"
+            /></el-form-item>
+            <el-form-item label="接用电性质" prop="electricityList.electricityType">
+              <el-select v-model="formValue.electricityList.electricityType" class="w-100">
+                <el-option :value="1" label="长期" />
+                <el-option :value="2" label="临时" />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="作业开始时间" prop="electricityList.operationStartTime"
+              ><el-date-picker
+                size="large"
+                placeholder="作业开始时间"
+                v-model="formValue.electricityList.operationStartTime"
+                value-format="YYYY-MM-DD"
+                class="w-100"
+            /></el-form-item>
+            <el-form-item label="作业结束时间" prop="electricityList.operationEndTime"
+              ><el-date-picker
+                size="large"
+                placeholder="作业结束时间"
+                v-model="formValue.electricityList.operationEndTime"
+                value-format="YYYY-MM-DD"
+                class="w-100"
+            /></el-form-item>
+            <el-form-item label="事由" prop="electricityList.reason" class="span-full"
+              ><el-input size="large" placeholder="输入事由" v-model="formValue.electricityList.reason" type="textarea" rows="3" show-word-limit maxlength="300" 
+            /></el-form-item>
+            <el-form-item label="责任人及联系方式" prop="electricityList.contactPerson"
+              ><el-input size="large" placeholder="输入责任人及联系方式" v-model="formValue.electricityList.contactPerson" type="textarea" rows="3" show-word-limit maxlength="300" 
+            /></el-form-item>
+            <el-form-item label="设备及功率" prop="electricityList.equipmentPower"
+              ><el-input size="large" placeholder="输入设备及功率" v-model="formValue.electricityList.equipmentPower" type="textarea" rows="3" show-word-limit maxlength="300" 
+            /></el-form-item>
+            
+            <el-form-item label="保护措施" prop="electricityList.safety" class="span-full"
+              ><el-input size="large" placeholder="输入保护措施" v-model="formValue.electricityList.safety" type="textarea" rows="3" show-word-limit maxlength="300" 
+            /></el-form-item>
+            
+            <el-form-item label="需求部门负责人" prop="electricityList.deptManager" class="span-full"
+              ><el-input size="large" placeholder="输入需求部门负责人" v-model="formValue.electricityList.deptManager" 
+            /></el-form-item>
+
+            <el-form-item label="建设管理部负责人" prop="electricityList.constructionManager" class="span-full"
+              ><el-input size="large" placeholder="输入建设管理部负责人" v-model="formValue.electricityList.constructionManager" 
+            /></el-form-item>
+            <el-form-item label="申请附件" class="span-full" prop="electricityList.attachment"
+              ><UploadFiles
+                label="上传附件"
+                @upload-success="(l) => handleUpload('electricityList', 'attachment', l)"
+                :fileList="listMap['electricityList.attachment']"
+            /></el-form-item>
+          </div>
+        </template>
+
+        <template v-else-if="formValue.hazardOperationType === 4">
+          <div class="section-title">动火作业详情</div>
+          <div class="form-grid" style="width:50%">
+            <el-form-item label="动火作业地点" prop="hot.hotWorkLocation"
+              ><el-input size="large" placeholder="输入动火作业地点" v-model="formValue.hot.hotWorkLocation"
+            /></el-form-item>
+            <el-form-item label="动火级别" prop="hot.hotWorkLevel">
+              <el-select v-model="formValue.hot.hotWorkLevel" class="w-100" >
+                <el-option :value="1" label="一级" />
+                <el-option :value="2" label="二级" />
+                <el-option :value="3" label="三级" />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="是否节假日、重大活动及公司启动一级响应期间" prop="hot.isSpecialPeriod">
+              <el-radio-group v-model="formValue.hot.isSpecialPeriod">
+                <el-radio :value="1">是</el-radio>
+                <el-radio :value="0">否</el-radio>
+              </el-radio-group>
+            </el-form-item>
+            <el-form-item label="动火时间起" prop="hot.hotWorkStart"
+              ><el-date-picker
+                size="large"
+                placeholder="输入动火时间起"
+                v-model="formValue.hot.hotWorkStart"
+                value-format="YYYY-MM-DD"
+                style="width:100%"
+            /></el-form-item>
+            <el-form-item label="动火时间止" prop="hot.hotWorkEnd"
+              ><el-date-picker size="large" placeholder="动火时间止" v-model="formValue.hot.hotWorkEnd" value-format="YYYY-MM-DD" style="width:100%"
+            /></el-form-item>
+
+            <el-form-item label="动火任务" prop="hot.hotWorkTask" class="span-full"
+              ><el-input size="large" placeholder="输入动火任务" v-model="formValue.hot.hotWorkTask" 
+            /></el-form-item>
+
+            <el-form-item label="动火类型" prop="hot.hotWorkType"
+              ><el-input size="large" v-model="formValue.hot.hotWorkType" placeholder="输入动火类型"
+            /></el-form-item>
+
+            <el-form-item label="动火作业人员" prop="hot.hotWorkman"
+              ><el-input size="large" placeholder="输入动火作业人员" v-model="formValue.hot.hotWorkman"
+            /></el-form-item>
+
+            <el-form-item label="动火人联系电话" prop="hot.hotWorkContact"
+              ><el-input size="large" placeholder="输入动火人联系电话" v-model="formValue.hot.hotWorkContact"
+            /></el-form-item>
+
+            <el-form-item label="动火危险性分析" prop="hot.hazardAnalysis" class="span-full"
+              ><el-input size="large" placeholder="输入动火危险性分析" v-model="formValue.hot.hazardAnalysis"
+            /></el-form-item>
+
+            <el-form-item label="消防安全防护措施" prop="hot.fireSafetyMeasures" class="span-full"
+              ><el-input size="large" placeholder="输入消防安全防护措施" v-model="formValue.hot.fireSafetyMeasures"
+            /></el-form-item>
+          </div>
+
+          <div class="form-grid" style="width:50%">
+            <el-form-item label="施工单位指定动火监护人" prop="hot.constructionSupervisor"
+              ><el-input size="large" placeholder="输入施工单位指定动火监护人"  v-model="formValue.hot.constructionSupervisor"
+            /></el-form-item>
+            <el-form-item label="施工单位指定动火监护人联系电话" prop="hot.supervisorContact"
+              ><el-input size="large" placeholder="输入施工单位指定动火监护人联系电话" v-model="formValue.hot.supervisorContact"
+            /></el-form-item>
+            <el-form-item label="施工单位现场负责人" prop="hot.constructionSiteLeader"
+              ><el-input size="large" placeholder="输入施工单位现场负责人" v-model="formValue.hot.constructionSiteLeader"
+            /></el-form-item>
+            <el-form-item label="施工单位教育人" prop="hot.constructionEducator"
+              ><el-input size="large" placeholder="输入施工单位教育人" v-model="formValue.hot.constructionEducator"
+            /></el-form-item>
+            <el-form-item label="申请部门指定动火监护人" prop="hot.hotWorkSupervisor"
+              ><el-input size="large" placeholder="输入申请部门指定动火监护人" v-model="formValue.hot.hotWorkSupervisor"
+            /></el-form-item>
+            <el-form-item label="申请部门指定动火监护人联系电话" prop="hot.supervisorNumber"
+              ><el-input size="large" placeholder="输入申请部门指定动火监护人联系电话" v-model="formValue.hot.supervisorNumber"
+            /></el-form-item>
+          </div>
+
+          <div class="form-grid" style="width:50%">
+            <el-form-item label="动火操作现场防护措施及检查情况" prop="hot.supervisorMeasures" class="span-full"
+              ><el-input size="large" placeholder="输入动火操作现场防护措施及检查情况" v-model="formValue.hot.supervisorMeasures" type="textarea"
+            /></el-form-item>
+
+            <el-form-item label="动火现场检查照片" prop="hot.photos"
+              ><UploadFiles
+                label="上传附件"
+                @upload-success="(l) => handleUpload('hot', 'photos', l)"
+                :fileList="listMap['hot.photos']"
+            /></el-form-item>
+            <el-form-item label="身份证复印件" prop="hot.idCard"
+              ><UploadFiles
+                label="上传附件"
+                @upload-success="(l) => handleUpload('hot', 'idCard', l)"
+                :fileList="listMap['hot.idCard']"
+            /></el-form-item>
+            <el-form-item label="动火人特种作业操作证复印件" prop="hot.optionCard"
+              ><UploadFiles
+                label="上传附件"
+                @upload-success="(l) => handleUpload('hot', 'optionCard', l)"
+                :fileList="listMap['hot.optionCard']"
+            /></el-form-item>
+            <el-form-item label="动火安全教育记录" prop="hot.safetyEducationPlan"
+              ><UploadFiles
+                label="上传附件"
+                @upload-success="(l) => handleUpload('hot', 'safetyEducationPlan', l)"
+                :fileList="listMap['hot.safetyEducationPlan']"
+            /></el-form-item>
+            <el-form-item label="动火作业施工方案" prop="hot.constructionPlan"
+              ><UploadFiles
+                label="上传附件"
+                @upload-success="(l) => handleUpload('hot', 'constructionPlan', l)"
+                :fileList="listMap['hot.constructionPlan']"
+            /></el-form-item>
+            <el-form-item label="动火作业场所准备照片" prop="hot.preparationPhotos"
+              ><UploadFiles
+                label="上传附件"
+                @upload-success="(l) => handleUpload('hot', 'preparationPhotos', l)"
+                :fileList="listMap['hot.preparationPhotos']"
+            /></el-form-item>
+
+            <el-form-item label="特种行业操作证网上查询情况照片" prop="hot.operationCertificates"
+              ><UploadFiles
+                label="上传附件"
+                @upload-success="(l) => handleUpload('hot', 'operationCertificates', l)"
+                :fileList="listMap['hot.operationCertificates']"
+            /></el-form-item>
+
+            <el-form-item label="动火作业安全管理协议" prop="hot.safetyManagementAgreement"
+              ><UploadFiles
+                label="上传附件"
+                @upload-success="(l) => handleUpload('hot', 'safetyManagementAgreement', l)"
+                :fileList="listMap['hot.safetyManagementAgreement']"
+            /></el-form-item>
+          </div>
+        </template>
+
+        <div class="form-line-divider"></div>
+        <div v-if="formValue.hazardOperationType < 3">
+            <div class="section-title-flex">
+            <span class="is-required-manual">安全措施</span>
+            <el-button type="primary" @click="addRow('measure')">+ 新增措施</el-button>
+            </div>
+            <el-table :data="formValue.measure" border class="mb-20">
+            <el-table-column label="序号" prop="serialNumber" width="100" align="center" />
+            <el-table-column label="安全措施"
+                ><template #default="scope"><el-input placeholder="输入安全措施" v-model="scope.row.safetyMeasure" /></template
+            ></el-table-column>
+            <el-table-column label="确认人" width="200"
+                ><template #default="scope"><el-input placeholder="输入确认人" v-model="scope.row.confirmer" /></template
+            ></el-table-column>
+            <el-table-column label="操作" width="100" align="center">
+                <template #default="scope"
+                ><el-button type="primary" link @click="removeRow('measure', scope.$index)">删除</el-button></template
+                >
+            </el-table-column>
+            </el-table>
+        </div>
+      </el-form>
     </main>
     </main>
 
 
     <footer class="safety-platform-container__footer">
     <footer class="safety-platform-container__footer">
       <el-button size="large" @click="router.back()">取 消</el-button>
       <el-button size="large" @click="router.back()">取 消</el-button>
       <el-button type="primary" size="large" :loading="loading" @click="handleSave">提交</el-button>
       <el-button type="primary" size="large" :loading="loading" @click="handleSave">提交</el-button>
     </footer>
     </footer>
+
+    <el-dialog v-model="hotWorkDialogVisible" title="">
+    <div class="hotWorkDialog"
+      v-html="
+        `<p style='margin-bottom:10px'>备注1:</p>
+    <p style='margin-bottom:10px'>1.【重要】申请部门联络人手机号需与企业微信中登记的手机号一致,系統根据申请部门联络人手机号推送审批单及相关信息。</p>
+    <p style='margin-bottom:10px'>2.一级动火,由动火部门申请,须由院消防安全麦任人南批;二级动火,由动火都门申清,须由消防安全分管院领导南批;三级动火,由动火部门申请,须由消防安全管理部门领导南批。</p>
+    <p style='margin-bottom:10px'>3.申请动火时需提供动火地点具体位置的照片,否则不子以办理动火证。</p>
+    <p style='margin-bottom:10px'>4.一级动火区域为:一级危险点、油库、燃油试验室、燃气区域等高危场所;二级动火区域为:二级危险点、35KV变电站、高处作业场所、试验场所、仓库。堆场、待建区等;三级动火区域为:三级危险点、10KV交电站、空压机房、办公室、室外区域(除待建区外)
+    等。 </p>
+    <p style='margin-bottom:10px'>备注2:</p>
+    <p style='margin-bottom:10px'>1.填写动火开始时间及截止时间,一级动火和二级动火有效期不应超过1天,三级动火有效期不应超过6天:</p>
+    <p style='margin-bottom:10px'>2.动火作业需提前三天开始申请;</p>
+    <p style='margin-bottom:10px'>3.申请部门完成申请后,将动火作业表打印纸质版本及动火申请材料放置于动火现场,消防值班人员将进行现场检查,现场若无紙质动火作业表及动火申请材料不予动火。</p>
+    <p style='margin-bottom:10px'>备注3:</p>
+    <p style='margin-bottom:10px'>1,电煌 气割,严格道守“十不烧”规程操作: 2.操作前检查动火人员的工具、电焊机、电源开关及线路是否良好;</p>
+    <p style='margin-bottom:10px'>3.注意安全用电,检查电线是否有乱拖乱拉现象,电源线是否架空扎车; 4.检查人员在动火期间不得离开现场,应当留下监护, 5.
+    动火结束后,督促动火人员清理现场,不得留下残渣; 6.现场配备灭火器: 7.现场专人看护, 8.清理周边易燃物;</p>
+    <p style='margin-bottom:10px'>9.现场动火人员持证上岗;</p>`
+      "
+    ></div>
+    <template #footer>
+      <div class="dialog-footer">
+        <el-button type="primary" @click="handleCancel">我已阅读并确认</el-button>
+      </div>
+    </template>
+  </el-dialog>
   </div>
   </div>
 </template>
 </template>
 <script lang="ts" setup>
 <script lang="ts" setup>
@@ -441,6 +924,8 @@
   const approvalOptions = ref<any[]>([]);
   const approvalOptions = ref<any[]>([]);
   const firstLevelDepts = ref<any[]>([]);
   const firstLevelDepts = ref<any[]>([]);
   const cascaderRef = ref<any>(null);
   const cascaderRef = ref<any>(null);
+
+  const hotWorkDialogVisible = ref(false);
   const cascaderProp = { expandTrigger: 'click', checkStrictly: true, value: 'id', label: 'deptName' };
   const cascaderProp = { expandTrigger: 'click', checkStrictly: true, value: 'id', label: 'deptName' };
 
 
   /**
   /**
@@ -490,12 +975,79 @@
   });
   });
 
 
   const r = { required: true, message: '此项必填', trigger: ['blur', 'change'] };
   const r = { required: true, message: '此项必填', trigger: ['blur', 'change'] };
-  const rules = reactive({
+const rules = reactive({
     templateId: [r],
     templateId: [r],
     applicationUnitName: [r],
     applicationUnitName: [r],
     applicantName: [r],
     applicantName: [r],
-    applicationDepartmentId: [r],
+    applicationDepartment: [r],
     applicantPhone: [r],
     applicantPhone: [r],
+    hazardOperationType:[r],
+    remark: [r],
+    // 有限空间
+    'space.confinedSpaceUnit': [r],
+    'space.confinedSpaceName': [r],
+    'space.unitResponsible': [r],
+    'space.supervisor': [r],
+    'space.operator': [r],
+    'space.otherSpecialOps': [r],
+    'space.operationStartTime': [r],
+    'space.operationEndTime': [r],
+    'space.operationContent': [r],
+    'space.hazardIdentification': [r],
+    'space.attachment':[r],
+    // 高处作业
+    'highAltitude.operationLocation': [r],
+    'highAltitude.operationUnit': [r],
+    'highAltitude.operationHeight': [r],
+    'highAltitude.operationType': [r],
+    'highAltitude.operatorName': [r],
+    'highAltitude.supervisor': [r],
+    'highAltitude.operationStartTime': [r],
+    'highAltitude.operationEndTime': [r],
+    'highAltitude.operationContent': [r],
+    'highAltitude.hazardIdentification': [r],
+    'highAltitude.operatorJob':[r],
+    'highAltitude.attachment':[r],
+    // 临时用电
+    'electricityList.requestDepartment': [r],
+    'electricityList.electricityType': [r],
+    'electricityList.contactPerson': [r],
+    'electricityList.equipmentPower': [r],
+    'electricityList.operationStartTime': [r],
+    'electricityList.operationEndTime': [r],
+    'electricityList.safety': [r],
+    'electricityList.deptManager': [r],
+    'electricityList.constructionManager':[r],
+    'electricityList.reason': [r],
+    'electricityList.attachment': [r],
+    // 动火作业
+    'hot.hotWorkLocation': [r],
+    'hot.hotWorkLevel': [r],
+    'hot.isSpecialPeriod':[r],
+    'hot.hotWorkType': [r],
+    'hot.hotWorkStart': [r],
+    'hot.hotWorkEnd': [r],
+    'hot.hotWorkman': [r],
+    'hot.hotWorkContact': [r],
+    'hot.constructionSupervisor': [r],
+    'hot.supervisorContact': [r],
+    'hot.constructionSiteLeader': [r],
+    'hot.constructionEducator': [r],
+    'hot.hotWorkSupervisor': [r],
+    'hot.supervisorNumber': [r],
+    'hot.hotWorkTask': [r],
+    'hot.hazardAnalysis': [r],
+    'hot.fireSafetyMeasures': [r],
+    'hot.supervisorMeasures': [r],
+    // 动火附件
+    'hot.photos': [r],
+    'hot.idCard': [r],
+    'hot.optionCard': [r],
+    'hot.safetyEducationPlan': [r],
+    'hot.constructionPlan': [r],
+    'hot.preparationPhotos': [r],
+    'hot.operationCertificates': [r],
+    'hot.safetyManagementAgreement': [r],
   });
   });
 
 
   /**
   /**
@@ -512,7 +1064,16 @@
       formValue[obj][key] = formatted.length > 0 ? JSON.stringify(formatted) : '';
       formValue[obj][key] = formatted.length > 0 ? JSON.stringify(formatted) : '';
     }
     }
   };
   };
-
+  // 选择动火作业
+  const handleHazardOperationType = (value)=>{
+    if(value===4) {
+        hotWorkDialogVisible.value = true
+    }
+  }
+   const handleCancel = () => {
+    hotWorkDialogVisible.value = false;
+    sessionStorage.setItem('hazardOperationType', '4');
+  };
   /**
   /**
    * 4. 详情回显
    * 4. 详情回显
    */
    */
@@ -520,7 +1081,7 @@
     if (!detailId) return;
     if (!detailId) return;
     try {
     try {
       const res = await dangerWorkQueryDetail(detailId);
       const res = await dangerWorkQueryDetail(detailId);
-
+      res.applicationDepartmentId = JSON.parse(res.applicationDepartmentId)
       // 1. 基础属性拷贝
       // 1. 基础属性拷贝
       Object.assign(formValue, res);
       Object.assign(formValue, res);
 
 

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

@@ -60,10 +60,10 @@
           <el-table-column label="申请人" width="180" prop="applicantName" />
           <el-table-column label="申请人" width="180" prop="applicantName" />
           <el-table-column label="申请部门" width="180" prop="applicationDepartment" />
           <el-table-column label="申请部门" width="180" prop="applicationDepartment" />
           <el-table-column label="申请人电话" width="180" prop="applicantPhone" />
           <el-table-column label="申请人电话" width="180" prop="applicantPhone" />
-          <el-table-column label="作业类别" width="180" prop="hazardOperationType" />
+          <el-table-column label="作业类别" width="180" prop="hazardOperationTypeName" />
           <el-table-column label="申请状态" width="120" prop="statusName" />
           <el-table-column label="申请状态" width="120" prop="statusName" />
           <el-table-column label="申请时间" width="180" prop="createdAt" />
           <el-table-column label="申请时间" width="180" prop="createdAt" />
-          <el-table-column label="备注" width="180" prop="remark" />
+          <!-- <el-table-column label="备注" width="180" prop="remark" /> -->
           <el-table-column label="当前节点名称" width="180" prop="nodeDescription" />
           <el-table-column label="当前节点名称" width="180" prop="nodeDescription" />
 
 
           <el-table-column fixed="right" min-width="240" label="操作">
           <el-table-column fixed="right" min-width="240" label="操作">

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

@@ -4,7 +4,7 @@
       <div class="breadcrumb-title"><BreadcrumbBack /> 查看危险作业申请</div>
       <div class="breadcrumb-title"><BreadcrumbBack /> 查看危险作业申请</div>
     </header>
     </header>
 
 
-    <main class="safety-platform-container__main">
+    <!-- <main class="safety-platform-container__main">
       <el-form ref="formRef" :model="formValue" :rules="rules" disabled label-width="160px" label-position="right">
       <el-form ref="formRef" :model="formValue" :rules="rules" disabled label-width="160px" label-position="right">
         <div class="section-title">基础信息</div>
         <div class="section-title">基础信息</div>
         <div class="form-grid">
         <div class="form-grid">
@@ -420,6 +420,462 @@
           </el-table-column>
           </el-table-column>
         </el-table>
         </el-table>
       </el-form>
       </el-form>
+    </main> -->
+
+    <main class="safety-platform-container__main">
+      <el-form ref="formRef" :model="formValue" :rules="rules" disabled label-width="180px" label-position="right">
+        <div class="section-title">基础信息</div>
+        <div class="form-grid" style="width:50%">
+
+          <el-form-item label="申请单位" prop="applicationUnitName"
+            ><el-input size="large" placeholder="输入申请单位名称" v-model="formValue.applicationUnitName"
+          /></el-form-item>
+
+          <el-form-item label="申请人" prop="applicantName"
+            ><el-input size="large" placeholder="输入申请人" v-model="formValue.applicantName"
+          /></el-form-item>
+
+          <el-form-item label="申请部门" prop="applicationDepartment"
+            ><el-cascader
+              v-model="formValue.applicationDepartmentId"
+              size="large"
+              ref="cascaderRef"
+              :options="firstLevelDepts"
+              :props="cascaderProp"
+              :show-all-levels="false"
+              placeholder="请选择申请部门"
+              filterable
+              @change="handleChangeDept"
+              style="width: 100%"
+          /></el-form-item>
+
+          <el-form-item label="申请人电话" prop="applicantPhone"
+            ><el-input size="large" placeholder="输入申请人电话" v-model="formValue.applicantPhone"
+          /></el-form-item>
+
+          <el-form-item label="危险作业类别" prop="hazardOperationType">
+            <el-select size="large" v-model="formValue.hazardOperationType" placeholder="选择危险作业类别">
+              <el-option :value="1" label="有限空间" />
+              <el-option :value="2" label="高处作业" />
+              <el-option :value="3" label="临时用电" />
+              <el-option :value="4" label="动火作业" />
+            </el-select>
+          </el-form-item>
+
+          <el-form-item label="审批流程" prop="templateId" class="span-full">
+            <el-select v-model="formValue.templateId" placeholder="请选择审批流程" size="large" clearable>
+              <el-option v-for="opt in approvalOptions" :key="opt.id" :label="opt.templateName" :value="opt.id" />
+            </el-select>
+          </el-form-item>
+
+          <!-- <el-form-item label="备注信息" prop="remark" class="span-full">
+            <el-input size="large" v-model="formValue.remark" type="textarea" :rows="2" placeholder="备注信息..." />
+          </el-form-item> -->
+        </div>
+
+        <div class="form-line-divider"></div>
+
+        <template v-if="formValue.hazardOperationType === 1">
+          <div class="section-title">有限空间作业详情</div>
+          <div class="form-grid" style="width:50%">
+            <el-form-item label="有限空间所属单位" prop="space.confinedSpaceUnit"
+              ><el-input size="large" placeholder="输入有限空间所属单位" v-model="formValue.space.confinedSpaceUnit"
+            /></el-form-item>
+            <el-form-item label="有限空间名称" prop="space.confinedSpaceName"
+              ><el-input size="large" placeholder="输入有限空间名称" v-model="formValue.space.confinedSpaceName"
+            /></el-form-item>
+
+            <el-form-item label="作业内容" prop="space.operationContent" class="span-full"
+              ><el-input size="large" placeholder="输入作业内容" v-model="formValue.space.operationContent" type="textarea"
+            /></el-form-item>
+
+            <el-form-item label="作业开始时间" prop="space.operationStartTime"
+              ><el-date-picker
+                size="large"
+                v-model="formValue.space.operationStartTime"
+                value-format="YYYY-MM-DD"
+                placeholder="作业开始时间"
+                style="width: 100%"
+            /></el-form-item>
+            <el-form-item label="作业结束时间" prop="space.operationEndTime"
+              ><el-date-picker
+                size="large"
+                v-model="formValue.space.operationEndTime"
+                placeholder="作业结束时间"
+                value-format="YYYY-MM-DD"
+                style="width: 100%"
+            /></el-form-item>
+
+            <el-form-item label="作业单位负责人" prop="space.unitResponsible"
+              ><el-input size="large" placeholder="输入作业单位负责人" v-model="formValue.space.unitResponsible"
+            /></el-form-item>
+            <el-form-item label="监护人" prop="space.supervisor"
+              ><el-input size="large" placeholder="输入监护人" v-model="formValue.space.supervisor"
+            /></el-form-item>
+            <el-form-item label="作业人" prop="space.operator"
+              ><el-input size="large" placeholder="输入作业人" v-model="formValue.space.operator"
+            /></el-form-item>
+            <el-form-item label="涉及其它特殊作业" prop="space.otherSpecialOps"
+              ><el-input size="large" placeholder="输入涉及其它特殊作业" v-model="formValue.space.otherSpecialOps"
+            /></el-form-item>
+
+            <el-form-item label="危害辨识" prop="space.hazardIdentification" class="span-full"
+              ><el-input size="large" placeholder="输入危害辨识" v-model="formValue.space.hazardIdentification" type="textarea"
+            /></el-form-item>
+            <el-form-item label="作业附件" class="span-full" prop="space.attachment"
+              ><UploadFiles
+                label="上传附件"
+                @upload-success="(l) => handleUpload('space', 'attachment', l)"
+                :fileList="listMap['space.attachment']"
+            /></el-form-item>
+          </div>
+
+          <div class="sub-group-box">
+            <div class="sub-label is-required-manual section-title-flex">项目分析-物质分析标准</div>
+            <el-table :data="[formValue.space]" border class="density-table" style="margin-bottom: 20px">
+              <el-table-column label="有毒有害介质">
+                <template #default="scope">
+                  <el-form-item prop="space.toxicHazardous" :rules="r" label-width="0" class="m-0"
+                    ><el-input v-model="scope.row.toxicHazardous"
+                  /></el-form-item>
+                </template>
+              </el-table-column>
+              <el-table-column label="可燃气">
+                <template #default="scope">
+                  <el-form-item prop="space.flammable" :rules="r" label-width="0" class="m-0"
+                    ><el-input v-model="scope.row.flammable"
+                  /></el-form-item>
+                </template>
+              </el-table-column>
+              <el-table-column label="氧含量">
+                <template #default="scope">
+                  <el-form-item prop="space.oxygenContent" :rules="r" label-width="0" class="m-0"
+                    ><el-input v-model="scope.row.oxygenContent"
+                  /></el-form-item>
+                </template>
+              </el-table-column>
+            </el-table>
+          </div>
+
+          <div class="section-title-flex">
+          <span class="is-required-manual">项目分析-危害分析记录</span>
+          <el-button type="primary" @click="addRow('analysis')">+ 新增记录</el-button>
+        </div>
+        <el-table :data="formValue.analysis" border>
+          <el-table-column label="有毒有害介质"
+            ><template #default="scope"><el-input v-model="scope.row.toxicSubstance" /></template
+          ></el-table-column>
+          <el-table-column label="可燃气"
+            ><template #default="scope"><el-input v-model="scope.row.flammableGas" /></template
+          ></el-table-column>
+          <el-table-column label="氧含量"
+            ><template #default="scope"><el-input v-model="scope.row.oxygenContent" /></template
+          ></el-table-column>
+          <el-table-column label="部位"
+            ><template #default="scope"><el-input v-model="scope.row.analysisPosition" /></template
+          ></el-table-column>
+          <el-table-column label="分析人" width="130"
+            ><template #default="scope"><el-input v-model="scope.row.analyst" /></template
+          ></el-table-column>
+          <el-table-column label="时间" width="220"
+            ><template #default="scope">
+              <el-date-picker
+                v-model="scope.row.analysisTime"
+                value-format="YYYY-MM-DD"
+                style="width: 100%"
+              /> </template
+          ></el-table-column>
+          <el-table-column label="操作" width="100" align="center">
+            <template #default="scope"
+              ><el-button type="primary" link @click="removeRow('analysis', scope.$index)">删除</el-button></template
+            >
+          </el-table-column>
+        </el-table>
+
+          <div class="form-grid mt-20">
+            
+          </div>
+        </template>
+
+        <template v-else-if="formValue.hazardOperationType === 2">
+          <div class="section-title">高处作业详情</div>
+          <div class="form-grid" style="width:50%">
+
+            <el-form-item label="作业地点" prop="highAltitude.operationLocation"
+              ><el-input size="large" placeholder="输入作业地点" v-model="formValue.highAltitude.operationLocation"
+            /></el-form-item>
+            <el-form-item label="作业开始时间" prop="highAltitude.operationStartTime"
+              ><el-date-picker
+                size="large"
+                v-model="formValue.highAltitude.operationStartTime"
+                value-format="YYYY-MM-DD"
+                placeholder="作业开始时间"
+                style="width:100%"
+            /></el-form-item>
+            <el-form-item label="作业结束时间" prop="highAltitude.operationEndTime"
+              ><el-date-picker
+                size="large"
+                v-model="formValue.highAltitude.operationEndTime"
+                value-format="YYYY-MM-DD"
+                placeholder="作业结束时间"
+                style="width:100%"
+            /></el-form-item>
+            <el-form-item label="作业内容" prop="highAltitude.operationContent" class="span-full"
+              ><el-input size="large" placeholder="输入作业内容" v-model="formValue.highAltitude.operationContent" type="textarea"
+            /></el-form-item>
+
+            <el-form-item label="作业高度" prop="highAltitude.operationHeight"
+              ><el-input-number
+                size="large"
+                placeholder="输入作业高度"
+                v-model="formValue.highAltitude.operationHeight"
+                style="width:100%"
+                :controls="false"
+            /></el-form-item>
+
+            <el-form-item label="作业单位" prop="highAltitude.operationUnit"
+              ><el-input size="large" placeholder="输入作业单位" v-model="formValue.highAltitude.operationUnit"
+            /></el-form-item>
+            
+            <el-form-item label="作业类别" prop="highAltitude.operationType"
+              ><el-input size="large" v-model="formValue.highAltitude.operationType" placeholder="输入作业类别"
+            /></el-form-item>
+            <el-form-item label="作业人" prop="highAltitude.operatorName"
+              ><el-input size="large" placeholder="输入作业人" v-model="formValue.highAltitude.operatorName"
+            /></el-form-item>
+            <el-form-item label="监护人" prop="highAltitude.supervisor"
+              ><el-input size="large" placeholder="输入监护人" v-model="formValue.highAltitude.supervisor"
+            /></el-form-item>
+            <el-form-item label="涉及其它特殊作业" prop="highAltitude.operatorJob"
+              ><el-input size="large" placeholder="输入涉及其它特殊作业" v-model="formValue.highAltitude.operatorJob"
+            /></el-form-item>
+            <el-form-item label="危害辨识" prop="highAltitude.hazardIdentification" class="span-full"
+              ><el-input size="large" placeholder="输入危害辨识" v-model="formValue.highAltitude.hazardIdentification" type="textarea"
+            /></el-form-item>
+            <el-form-item label="作业附件" class="span-full" prop="highAltitude.attachment"
+              ><UploadFiles
+                label="上传附件"
+                @upload-success="(l) => handleUpload('highAltitude', 'attachment', l)"
+                :fileList="listMap['highAltitude.attachment']"
+            /></el-form-item>
+          </div>
+        </template>
+
+        <template v-else-if="formValue.hazardOperationType === 3">
+          <div class="section-title">临时用电详情</div>
+          <div class="form-grid" style="width:50%">
+            <el-form-item label="需求部门/IPT团队" prop="electricityList.requestDepartment"
+              ><el-input size="large" placeholder="输入需求部门/IPT团队" v-model="formValue.electricityList.requestDepartment"
+            /></el-form-item>
+            <el-form-item label="接用电性质" prop="electricityList.electricityType">
+              <el-select v-model="formValue.electricityList.electricityType" class="w-100">
+                <el-option :value="1" label="长期" />
+                <el-option :value="2" label="临时" />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="作业开始时间" prop="electricityList.operationStartTime"
+              ><el-date-picker
+                size="large"
+                placeholder="作业开始时间"
+                v-model="formValue.electricityList.operationStartTime"
+                value-format="YYYY-MM-DD"
+                class="w-100"
+            /></el-form-item>
+            <el-form-item label="作业结束时间" prop="electricityList.operationEndTime"
+              ><el-date-picker
+                size="large"
+                placeholder="作业结束时间"
+                v-model="formValue.electricityList.operationEndTime"
+                value-format="YYYY-MM-DD"
+                class="w-100"
+            /></el-form-item>
+            <el-form-item label="事由" prop="electricityList.reason" class="span-full"
+              ><el-input size="large" placeholder="输入事由" v-model="formValue.electricityList.reason" type="textarea" rows="3" show-word-limit maxlength="300" 
+            /></el-form-item>
+            <el-form-item label="责任人及联系方式" prop="electricityList.contactPerson"
+              ><el-input size="large" placeholder="输入责任人及联系方式" v-model="formValue.electricityList.contactPerson" type="textarea" rows="3" show-word-limit maxlength="300" 
+            /></el-form-item>
+            <el-form-item label="设备及功率" prop="electricityList.equipmentPower"
+              ><el-input size="large" placeholder="输入设备及功率" v-model="formValue.electricityList.equipmentPower" type="textarea" rows="3" show-word-limit maxlength="300" 
+            /></el-form-item>
+            
+            <el-form-item label="保护措施" prop="electricityList.safety" class="span-full"
+              ><el-input size="large" placeholder="输入保护措施" v-model="formValue.electricityList.safety" type="textarea" rows="3" show-word-limit maxlength="300" 
+            /></el-form-item>
+            
+            <el-form-item label="需求部门负责人" prop="electricityList.deptManager" class="span-full"
+              ><el-input size="large" placeholder="输入需求部门负责人" v-model="formValue.electricityList.deptManager" 
+            /></el-form-item>
+
+            <el-form-item label="建设管理部负责人" prop="electricityList.constructionManager" class="span-full"
+              ><el-input size="large" placeholder="输入建设管理部负责人" v-model="formValue.electricityList.constructionManager" 
+            /></el-form-item>
+            <el-form-item label="申请附件" class="span-full" prop="electricityList.attachment"
+              ><UploadFiles
+                label="上传附件"
+                @upload-success="(l) => handleUpload('electricityList', 'attachment', l)"
+                :fileList="listMap['electricityList.attachment']"
+            /></el-form-item>
+          </div>
+        </template>
+
+        <template v-else-if="formValue.hazardOperationType === 4">
+          <div class="section-title">动火作业详情</div>
+          <div class="form-grid" style="width:50%">
+            <el-form-item label="动火作业地点" prop="hot.hotWorkLocation"
+              ><el-input size="large" placeholder="输入动火作业地点" v-model="formValue.hot.hotWorkLocation"
+            /></el-form-item>
+            <el-form-item label="动火级别" prop="hot.hotWorkLevel">
+              <el-select v-model="formValue.hot.hotWorkLevel" class="w-100" >
+                <el-option :value="1" label="一级" />
+                <el-option :value="2" label="二级" />
+                <el-option :value="3" label="三级" />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="是否节假日、重大活动及公司启动一级响应期间" prop="hot.isSpecialPeriod">
+              <el-radio-group v-model="formValue.hot.isSpecialPeriod">
+                <el-radio :value="1">是</el-radio>
+                <el-radio :value="0">否</el-radio>
+              </el-radio-group>
+            </el-form-item>
+            <el-form-item label="动火时间起" prop="hot.hotWorkStart"
+              ><el-date-picker
+                size="large"
+                placeholder="输入动火时间起"
+                v-model="formValue.hot.hotWorkStart"
+                value-format="YYYY-MM-DD"
+                style="width:100%"
+            /></el-form-item>
+            <el-form-item label="动火时间止" prop="hot.hotWorkEnd"
+              ><el-date-picker size="large" placeholder="动火时间止" v-model="formValue.hot.hotWorkEnd" value-format="YYYY-MM-DD" style="width:100%"
+            /></el-form-item>
+
+            <el-form-item label="动火任务" prop="hot.hotWorkTask" class="span-full"
+              ><el-input size="large" placeholder="输入动火任务" v-model="formValue.hot.hotWorkTask" 
+            /></el-form-item>
+
+            <el-form-item label="动火类型" prop="hot.hotWorkType"
+              ><el-input size="large" v-model="formValue.hot.hotWorkType" placeholder="输入动火类型"
+            /></el-form-item>
+
+            <el-form-item label="动火作业人员" prop="hot.hotWorkman"
+              ><el-input size="large" placeholder="输入动火作业人员" v-model="formValue.hot.hotWorkman"
+            /></el-form-item>
+
+            <el-form-item label="动火人联系电话" prop="hot.hotWorkContact"
+              ><el-input size="large" placeholder="输入动火人联系电话" v-model="formValue.hot.hotWorkContact"
+            /></el-form-item>
+
+            <el-form-item label="动火危险性分析" prop="hot.hazardAnalysis" class="span-full"
+              ><el-input size="large" placeholder="输入动火危险性分析" v-model="formValue.hot.hazardAnalysis"
+            /></el-form-item>
+
+            <el-form-item label="消防安全防护措施" prop="hot.fireSafetyMeasures" class="span-full"
+              ><el-input size="large" placeholder="输入消防安全防护措施" v-model="formValue.hot.fireSafetyMeasures"
+            /></el-form-item>
+          </div>
+
+          <div class="form-grid" style="width:50%">
+            <el-form-item label="施工单位指定动火监护人" prop="hot.constructionSupervisor"
+              ><el-input size="large" placeholder="输入施工单位指定动火监护人"  v-model="formValue.hot.constructionSupervisor"
+            /></el-form-item>
+            <el-form-item label="施工单位指定动火监护人联系电话" prop="hot.supervisorContact"
+              ><el-input size="large" placeholder="输入施工单位指定动火监护人联系电话" v-model="formValue.hot.supervisorContact"
+            /></el-form-item>
+            <el-form-item label="施工单位现场负责人" prop="hot.constructionSiteLeader"
+              ><el-input size="large" placeholder="输入施工单位现场负责人" v-model="formValue.hot.constructionSiteLeader"
+            /></el-form-item>
+            <el-form-item label="施工单位教育人" prop="hot.constructionEducator"
+              ><el-input size="large" placeholder="输入施工单位教育人" v-model="formValue.hot.constructionEducator"
+            /></el-form-item>
+            <el-form-item label="申请部门指定动火监护人" prop="hot.hotWorkSupervisor"
+              ><el-input size="large" placeholder="输入申请部门指定动火监护人" v-model="formValue.hot.hotWorkSupervisor"
+            /></el-form-item>
+            <el-form-item label="申请部门指定动火监护人联系电话" prop="hot.supervisorNumber"
+              ><el-input size="large" placeholder="输入申请部门指定动火监护人联系电话" v-model="formValue.hot.supervisorNumber"
+            /></el-form-item>
+          </div>
+
+          <div class="form-grid" style="width:50%">
+            <el-form-item label="动火操作现场防护措施及检查情况" prop="hot.supervisorMeasures" class="span-full"
+              ><el-input size="large" placeholder="输入动火操作现场防护措施及检查情况" v-model="formValue.hot.supervisorMeasures" type="textarea"
+            /></el-form-item>
+
+            <el-form-item label="动火现场检查照片" prop="hot.photos"
+              ><UploadFiles
+                label="上传附件"
+                @upload-success="(l) => handleUpload('hot', 'photos', l)"
+                :fileList="listMap['hot.photos']"
+            /></el-form-item>
+            <el-form-item label="身份证复印件" prop="hot.idCard"
+              ><UploadFiles
+                label="上传附件"
+                @upload-success="(l) => handleUpload('hot', 'idCard', l)"
+                :fileList="listMap['hot.idCard']"
+            /></el-form-item>
+            <el-form-item label="动火人特种作业操作证复印件" prop="hot.optionCard"
+              ><UploadFiles
+                label="上传附件"
+                @upload-success="(l) => handleUpload('hot', 'optionCard', l)"
+                :fileList="listMap['hot.optionCard']"
+            /></el-form-item>
+            <el-form-item label="动火安全教育记录" prop="hot.safetyEducationPlan"
+              ><UploadFiles
+                label="上传附件"
+                @upload-success="(l) => handleUpload('hot', 'safetyEducationPlan', l)"
+                :fileList="listMap['hot.safetyEducationPlan']"
+            /></el-form-item>
+            <el-form-item label="动火作业施工方案" prop="hot.constructionPlan"
+              ><UploadFiles
+                label="上传附件"
+                @upload-success="(l) => handleUpload('hot', 'constructionPlan', l)"
+                :fileList="listMap['hot.constructionPlan']"
+            /></el-form-item>
+            <el-form-item label="动火作业场所准备照片" prop="hot.preparationPhotos"
+              ><UploadFiles
+                label="上传附件"
+                @upload-success="(l) => handleUpload('hot', 'preparationPhotos', l)"
+                :fileList="listMap['hot.preparationPhotos']"
+            /></el-form-item>
+
+            <el-form-item label="特种行业操作证网上查询情况照片" prop="hot.operationCertificates"
+              ><UploadFiles
+                label="上传附件"
+                @upload-success="(l) => handleUpload('hot', 'operationCertificates', l)"
+                :fileList="listMap['hot.operationCertificates']"
+            /></el-form-item>
+
+            <el-form-item label="动火作业安全管理协议" prop="hot.safetyManagementAgreement"
+              ><UploadFiles
+                label="上传附件"
+                @upload-success="(l) => handleUpload('hot', 'safetyManagementAgreement', l)"
+                :fileList="listMap['hot.safetyManagementAgreement']"
+            /></el-form-item>
+          </div>
+        </template>
+
+        <div class="form-line-divider"></div>
+        <div v-if="formValue.hazardOperationType < 3">
+            <div class="section-title-flex">
+            <span class="is-required-manual">安全措施</span>
+            <el-button type="primary" @click="addRow('measure')">+ 新增措施</el-button>
+            </div>
+            <el-table :data="formValue.measure" border class="mb-20">
+            <el-table-column label="序号" prop="serialNumber" width="100" align="center" />
+            <el-table-column label="安全措施"
+                ><template #default="scope"><el-input placeholder="输入安全措施" v-model="scope.row.safetyMeasure" /></template
+            ></el-table-column>
+            <el-table-column label="确认人" width="200"
+                ><template #default="scope"><el-input placeholder="输入确认人" v-model="scope.row.confirmer" /></template
+            ></el-table-column>
+            <el-table-column label="操作" width="100" align="center">
+                <template #default="scope"
+                ><el-button type="primary" link @click="removeRow('measure', scope.$index)">删除</el-button></template
+                >
+            </el-table-column>
+            </el-table>
+        </div>
+      </el-form>
     </main>
     </main>
 
 
     <footer class="safety-platform-container__footer">
     <footer class="safety-platform-container__footer">
@@ -495,12 +951,79 @@
   });
   });
 
 
   const r = { required: true, message: '此项必填', trigger: ['blur', 'change'] };
   const r = { required: true, message: '此项必填', trigger: ['blur', 'change'] };
-  const rules = reactive({
+const rules = reactive({
     templateId: [r],
     templateId: [r],
     applicationUnitName: [r],
     applicationUnitName: [r],
     applicantName: [r],
     applicantName: [r],
-    applicationDepartmentId: [r],
+    applicationDepartment: [r],
     applicantPhone: [r],
     applicantPhone: [r],
+    hazardOperationType:[r],
+    remark: [r],
+    // 有限空间
+    'space.confinedSpaceUnit': [r],
+    'space.confinedSpaceName': [r],
+    'space.unitResponsible': [r],
+    'space.supervisor': [r],
+    'space.operator': [r],
+    'space.otherSpecialOps': [r],
+    'space.operationStartTime': [r],
+    'space.operationEndTime': [r],
+    'space.operationContent': [r],
+    'space.hazardIdentification': [r],
+    'space.attachment':[r],
+    // 高处作业
+    'highAltitude.operationLocation': [r],
+    'highAltitude.operationUnit': [r],
+    'highAltitude.operationHeight': [r],
+    'highAltitude.operationType': [r],
+    'highAltitude.operatorName': [r],
+    'highAltitude.supervisor': [r],
+    'highAltitude.operationStartTime': [r],
+    'highAltitude.operationEndTime': [r],
+    'highAltitude.operationContent': [r],
+    'highAltitude.hazardIdentification': [r],
+    'highAltitude.operatorJob':[r],
+    'highAltitude.attachment':[r],
+    // 临时用电
+    'electricityList.requestDepartment': [r],
+    'electricityList.electricityType': [r],
+    'electricityList.contactPerson': [r],
+    'electricityList.equipmentPower': [r],
+    'electricityList.operationStartTime': [r],
+    'electricityList.operationEndTime': [r],
+    'electricityList.safety': [r],
+    'electricityList.deptManager': [r],
+    'electricityList.constructionManager':[r],
+    'electricityList.reason': [r],
+    'electricityList.attachment': [r],
+    // 动火作业
+    'hot.hotWorkLocation': [r],
+    'hot.hotWorkLevel': [r],
+    'hot.isSpecialPeriod':[r],
+    'hot.hotWorkType': [r],
+    'hot.hotWorkStart': [r],
+    'hot.hotWorkEnd': [r],
+    'hot.hotWorkman': [r],
+    'hot.hotWorkContact': [r],
+    'hot.constructionSupervisor': [r],
+    'hot.supervisorContact': [r],
+    'hot.constructionSiteLeader': [r],
+    'hot.constructionEducator': [r],
+    'hot.hotWorkSupervisor': [r],
+    'hot.supervisorNumber': [r],
+    'hot.hotWorkTask': [r],
+    'hot.hazardAnalysis': [r],
+    'hot.fireSafetyMeasures': [r],
+    'hot.supervisorMeasures': [r],
+    // 动火附件
+    'hot.photos': [r],
+    'hot.idCard': [r],
+    'hot.optionCard': [r],
+    'hot.safetyEducationPlan': [r],
+    'hot.constructionPlan': [r],
+    'hot.preparationPhotos': [r],
+    'hot.operationCertificates': [r],
+    'hot.safetyManagementAgreement': [r],
   });
   });
 
 
   /**
   /**
@@ -525,7 +1048,7 @@
     if (!detailId) return;
     if (!detailId) return;
     try {
     try {
       const res = await dangerWorkQueryDetail(detailId);
       const res = await dangerWorkQueryDetail(detailId);
-
+        res.applicationDepartmentId = JSON.parse(res.applicationDepartmentId)
       // 1. 基础属性拷贝
       // 1. 基础属性拷贝
       Object.assign(formValue, res);
       Object.assign(formValue, res);
 
 

+ 1 - 1
src/views/production-safety/risk-identification-and-control/key-site-sensor-manage/VideosGridBase/CamerasGrid.vue

@@ -42,7 +42,7 @@
   import urlJoin from 'url-join';
   import urlJoin from 'url-join';
   import { useCameraGroupList } from '@/store/modules/useCameraGroupList';
   import { useCameraGroupList } from '@/store/modules/useCameraGroupList';
   import { userGridType } from '@/store/modules/userGridType';
   import { userGridType } from '@/store/modules/userGridType';
-  import { GridType } from '@/views/disaster/monitor/splitScreenRetrieval/type';
+  import { GridType } from '@/types/camera-group';
   import { type Camera, CameraInPlay } from '../type';
   import { type Camera, CameraInPlay } from '../type';
   import { userSplitScreenFullScreen } from '@/store/modules/userSplitScreenFullScreen';
   import { userSplitScreenFullScreen } from '@/store/modules/userSplitScreenFullScreen';
   import { ElMessageBox } from 'element-plus';
   import { ElMessageBox } from 'element-plus';

+ 19 - 18
src/views/production-safety/risk-identification-and-control/key-site-sensor-manage/index.vue

@@ -2,13 +2,14 @@
  * @Author: liuJie
  * @Author: liuJie
  * @Date: 2026-02-26 13:57:24
  * @Date: 2026-02-26 13:57:24
  * @LastEditors: liuJie
  * @LastEditors: liuJie
- * @LastEditTime: 2026-03-10 15:05:42
+ * @LastEditTime: 2026-03-11 13:06:40
  * @Describe: 传感器
  * @Describe: 传感器
 -->
 -->
 <template>
 <template>
   <div class="nine-square-grid">
   <div class="nine-square-grid">
     <div class="leftSideBar">
     <div class="leftSideBar">
-      <CameraGroupListAndTree />
+        传感器模块(开发中)
+      <!-- <CameraGroupListAndTree /> -->
     </div>
     </div>
 
 
     <div class="toolbarAndCamerasGrid">
     <div class="toolbarAndCamerasGrid">
@@ -18,22 +19,22 @@
 </template>
 </template>
 
 
 <script setup lang="ts">
 <script setup lang="ts">
-  import { onMounted } from 'vue';
-  import CameraGroupListAndTree from './CameraGroupListAndTree/CameraGroupListAndTree.vue';
-  import VideosGridBase from './VideosGridBase/VideosGridBase.vue';
-  import { useCameraGroupList } from '@/store/modules/useCameraGroupList';
-  import { storeToRefs } from 'pinia';
-  import { useTargetTenantIdStore } from '@/store/modules/useTargetTenantIdStore';
-  import { useCameraStatus } from './hooks/useCameraStatus';
-
-  const { cameraInPlay } = storeToRefs(useCameraGroupList());
-
-  const { clear } = useTargetTenantIdStore();
-  useCameraStatus();
-
-  onMounted(() => {
-    clear();
-  });
+//   import { onMounted } from 'vue';
+//   import CameraGroupListAndTree from './CameraGroupListAndTree/CameraGroupListAndTree.vue';
+//   import VideosGridBase from './VideosGridBase/VideosGridBase.vue';
+//   import { useCameraGroupList } from '@/store/modules/useCameraGroupList';
+//   import { storeToRefs } from 'pinia';
+//   import { useTargetTenantIdStore } from '@/store/modules/useTargetTenantIdStore';
+//   import { useCameraStatus } from './hooks/useCameraStatus';
+
+//   const { cameraInPlay } = storeToRefs(useCameraGroupList());
+
+//   const { clear } = useTargetTenantIdStore();
+//   useCameraStatus();
+
+//   onMounted(() => {
+//     clear();
+//   });
 </script>
 </script>
 
 
 <style lang="scss" scoped>
 <style lang="scss" scoped>

+ 4 - 0
src/views/production-safety/risk-identification-and-control/risk-manage/change.vue

@@ -446,6 +446,10 @@
       Object.keys(formValue).forEach((key) => {
       Object.keys(formValue).forEach((key) => {
         if (res[key] !== undefined) {
         if (res[key] !== undefined) {
           formValue[key] = res[key];
           formValue[key] = res[key];
+          // 进入详情变更默认为空
+          formValue.roomSafetyResponsibleTodo = ''
+          formValue.responsibleDepartmentTodo = ''
+          formValue.changeReason = ''
           formValue['responsibleDepartmentId'] = res['responsibleDepartmentId']
           formValue['responsibleDepartmentId'] = res['responsibleDepartmentId']
             ? res['responsibleDepartmentId'].split(',').map((item: string) => Number(item))
             ? res['responsibleDepartmentId'].split(',').map((item: string) => Number(item))
             : [];
             : [];

+ 40 - 17
src/views/production-safety/risk-identification-and-control/risk-manage/list.vue

@@ -88,23 +88,46 @@
           <el-table-column label="状态" prop="statusName" width="100" />
           <el-table-column label="状态" prop="statusName" width="100" />
           <el-table-column fixed="right" min-width="240" label="操作">
           <el-table-column fixed="right" min-width="240" label="操作">
             <template #default="scope">
             <template #default="scope">
-              <el-button
-                type="primary"
-                link
-                @click="$router.push({ name: 'riskManageEdit', query: { id: scope.row.id } })"
-                >编辑</el-button
-              >
-              <el-button type="primary" link @click="handleConfirmDeleteRow(scope)">删除</el-button>
-              <el-button type="primary" link @click="handleView(scope.row.id)">查看</el-button>
-              <el-button
-                type="primary"
-                link
-                @click="$router.push({ name: 'riskManageChange', query: { id: scope.row.id } })"
-                >变更</el-button
-              >
-              <el-button type="primary" link @click="handleApprove(scope, 1)">确认</el-button>
-              <el-button type="primary" link @click="handleApprove(scope, 0)">拒绝</el-button>
-              <el-button type="primary" link @click="handleApprove(scope, 0)">撤回</el-button>
+                <div v-if="(id === scope.row.createdBy && id !== scope.row.roomSafetyResponsible) && scope.row.status === 1">
+                    <el-button
+                        type="primary"
+                        link
+                        @click="$router.push({ name: 'riskManageEdit', query: { id: scope.row.id } })"
+                        >编辑</el-button>
+                    <el-button type="primary" link @click="handleConfirmDeleteRow(scope)">删除</el-button>
+                    <el-button type="primary" link @click="handleView(scope.row.id)">查看</el-button>
+                </div>
+                <div v-if="(id === scope.row.roomSafetyResponsible && id !==scope.row.createdBy) && scope.row.status === 1">
+                    <el-button
+                        type="primary"
+                        link
+                        @click="$router.push({ name: 'riskManageChange', query: { id: scope.row.id } })"
+                        >变更</el-button>
+                    <el-button type="primary" link @click="handleView(scope.row.id)">查看</el-button>
+                </div>
+                <div v-if="(id===scope.row.roomSafetyResponsible && id === scope.row.createdBy) && scope.row.status === 1">
+                    <el-button
+                        type="primary"
+                        link
+                        @click="$router.push({ name: 'riskManageEdit', query: { id: scope.row.id } })"
+                        >编辑</el-button>
+                    <el-button type="primary" link @click="handleConfirmDeleteRow(scope)">删除</el-button>
+                    <el-button type="primary" link @click="handleView(scope.row.id)">查看</el-button>
+                    <el-button
+                        type="primary"
+                        link
+                        @click="$router.push({ name: 'riskManageChange', query: { id: scope.row.id } })"
+                        >变更</el-button>
+                </div>
+                <div v-if="(id===scope.row.applyBy)&&scope.row.status === 2">
+                    <el-button type="primary" link @click="handleApprove(scope, 0)">撤回</el-button>
+                    <el-button type="primary" link @click="handleView(scope.row.id)">查看</el-button>
+                </div>
+                <div v-if="(id === scope.row.roomSafetyResponsibleTodo)&& scope.row.status===2">
+                    <el-button type="primary" link @click="handleApprove(scope, 1)">确认</el-button>
+                    <el-button type="primary" link @click="handleApprove(scope, 0)">拒绝</el-button>
+                    <el-button type="primary" link @click="handleView(scope.row.id)">查看</el-button>
+                </div>
             </template>
             </template>
           </el-table-column>
           </el-table-column>
         </el-table>
         </el-table>

+ 1 - 1
src/views/production-safety/safetyTrainingAndEducation/educationTrainingPlanManagement/components/issueEducationTrainingPlan.vue

@@ -39,7 +39,7 @@
     (newData) => {
     (newData) => {
       if (!newData) return;
       if (!newData) return;
       Object.assign(issueWorkPlanForm, {
       Object.assign(issueWorkPlanForm, {
-        id: newData.id,
+        id: newData.mid,
         responsibleDeptIds: newData.responsibleDeptIds,
         responsibleDeptIds: newData.responsibleDeptIds,
         groupId: '',
         groupId: '',
         startTime: '',
         startTime: '',

+ 7 - 7
src/views/production-safety/safetyTrainingAndEducation/educationTrainingPlanManagement/educationTrainingPlanManagement.vue

@@ -80,35 +80,35 @@
                 <!-- 状态:1-未下发 2-进行中 3-已完成 4-已作废 -->
                 <!-- 状态:1-未下发 2-进行中 3-已完成 4-已作废 -->
                 <!-- 1-未下发 -->
                 <!-- 1-未下发 -->
                 <template v-if="scope.row.status === 1">
                 <template v-if="scope.row.status === 1">
-                  <ActionButton text="编辑" @click="handleEdit(scope.row.id)" />
-                  <ActionButton text="查看" @click="handleView(scope.row.id)" />
+                  <ActionButton text="编辑" @click="handleEdit(scope.row.mid)" />
+                  <ActionButton text="查看" @click="handleView(scope.row.mid)" />
                   <ActionButton
                   <ActionButton
                     text="删除"
                     text="删除"
                     :popconfirm="{
                     :popconfirm="{
                       title: '确定要删除?',
                       title: '确定要删除?',
                     }"
                     }"
-                    @confirm="handleDelete(scope.row.id)"
+                    @confirm="handleDelete(scope.row.mid)"
                   />
                   />
                   <ActionButton text="下发" @click="handleIssue(scope.row)" />
                   <ActionButton text="下发" @click="handleIssue(scope.row)" />
                 </template>
                 </template>
                 <!-- 2-进行中 -->
                 <!-- 2-进行中 -->
                 <template v-else-if="scope.row.status === 2">
                 <template v-else-if="scope.row.status === 2">
-                  <ActionButton text="查看" @click="handleView(scope.row.id)" />
+                  <ActionButton text="查看" @click="handleView(scope.row.mid)" />
                   <ActionButton
                   <ActionButton
                     text="作废"
                     text="作废"
                     :popconfirm="{
                     :popconfirm="{
                       title: '确定要作废?',
                       title: '确定要作废?',
                     }"
                     }"
-                    @confirm="handleCancel(scope.row.id)"
+                    @confirm="handleCancel(scope.row.mid)"
                   />
                   />
                 </template>
                 </template>
                 <!-- 3-已完成 -->
                 <!-- 3-已完成 -->
                 <template v-else-if="scope.row.status === 3">
                 <template v-else-if="scope.row.status === 3">
-                  <ActionButton text="查看" @click="handleView(scope.row.id)" />
+                  <ActionButton text="查看" @click="handleView(scope.row.mid)" />
                 </template>
                 </template>
                 <!-- 其他 -->
                 <!-- 其他 -->
                 <template v-else>
                 <template v-else>
-                  <ActionButton text="查看" @click="handleView(scope.row.id)" />
+                  <ActionButton text="查看" @click="handleView(scope.row.mid)" />
                   <ActionButton
                   <ActionButton
                     text="删除"
                     text="删除"
                     :popconfirm="{
                     :popconfirm="{

+ 1 - 0
src/views/production-safety/safetyTrainingAndEducation/educationTrainingPlanManagementDept/components/educationTrainingPlanManagementDeptDetail.vue

@@ -196,6 +196,7 @@
   };
   };
 
 
   const handleSearch = () => {
   const handleSearch = () => {
+    showAddTrainingInfo.value = false
     page.value.current = 1;
     page.value.current = 1;
     tableQuery.pageNumber = 1;
     tableQuery.pageNumber = 1;
     getTableList();
     getTableList();