Jelajahi Sumber

fix: 更新施工管理表单字段及验证规则,优化附件上传功能

sunqijun 1 bulan lalu
induk
melakukan
c27a89516b

+ 116 - 42
src/views/production-safety/risk-identification-and-control/construction-safety-manage/add.vue

@@ -12,55 +12,51 @@
           <el-input v-model="formValue.projectName" size="large" placeholder="请输入项目名称" style="width: 330px" />
         </el-form-item>
 
-        <el-form-item label="施工单位" prop="constructionUnit">
+        <el-form-item label="施工地点(区域)" prop="constructionLocation">
           <el-input
-            v-model="formValue.constructionUnit"
+            v-model="formValue.constructionLocation"
             size="large"
-            placeholder="请输入单位全称"
+            placeholder="请输入施工地点(区域)"
             style="width: 330px"
           />
         </el-form-item>
 
-        <el-form-item label="施工地点" prop="constructionLocation">
+        <el-form-item label="施工单位名称" prop="constructionUnit">
           <el-input
-            v-model="formValue.constructionLocation"
+            v-model="formValue.constructionUnit"
             size="large"
-            placeholder="楼宇名称/区域"
+            placeholder="请输入施工单位名称"
             style="width: 330px"
           />
         </el-form-item>
 
-        <el-form-item label="施工人数" prop="workerCount">
-          <el-input-number v-model="formValue.workerCount" size="large" :min="1" style="width: 330px" />
-        </el-form-item>
-
-        <el-form-item label="项目负责人" prop="projectManagerName">
-          <el-input v-model="formValue.projectManagerName" size="large" placeholder="负责人姓名" style="width: 330px" />
+        <el-form-item label="施工项目负责人" prop="projectManagerName">
+          <el-input v-model="formValue.projectManagerName" size="large" placeholder="输入施工项目负责人" style="width: 330px" />
         </el-form-item>
 
-        <el-form-item label="负责人电话1" prop="projectManagerPhone1">
-          <el-input v-model="formValue.projectManagerPhone1" size="large" placeholder="必填" style="width: 330px" />
+        <el-form-item label="施工项目负责人电话1" prop="projectManagerPhone1">
+          <el-input v-model="formValue.projectManagerPhone1" size="large" placeholder="输入施工项目负责人电话1" style="width: 330px" />
         </el-form-item>
 
-        <el-form-item label="负责人电话2" prop="projectManagerPhone2">
-          <el-input v-model="formValue.projectManagerPhone2" size="large" placeholder="选填" style="width: 330px" />
+        <el-form-item label="施工项目负责人电话2" prop="projectManagerPhone2">
+          <el-input v-model="formValue.projectManagerPhone2" size="large" placeholder="输入施工项目负责人电话2" style="width: 330px" />
         </el-form-item>
 
-        <el-form-item label="现场安全员" prop="siteSafetyManagerName">
+        <el-form-item label="施工现场安全负责人" prop="siteSafetyManagerName">
           <el-input
             v-model="formValue.siteSafetyManagerName"
             size="large"
-            placeholder="安全员姓名"
+            placeholder="输入施工现场安全负责人"
             style="width: 330px"
           />
         </el-form-item>
 
-        <el-form-item label="安全员电话1" prop="siteSafetyPhone1">
-          <el-input v-model="formValue.siteSafetyPhone1" size="large" placeholder="必填" style="width: 330px" />
+        <el-form-item label="施工现场安全负责人电话1" prop="siteSafetyPhone1">
+          <el-input v-model="formValue.siteSafetyPhone1" size="large" placeholder="输入施工现场安全负责人电话1" style="width: 330px" />
         </el-form-item>
 
-        <el-form-item label="安全员电话2" prop="siteSafetyPhone2">
-          <el-input v-model="formValue.siteSafetyPhone2" size="large" placeholder="选填" style="width: 330px" />
+        <el-form-item label="施工现场安全负责人电话2" prop="siteSafetyPhone2">
+          <el-input v-model="formValue.siteSafetyPhone2" size="large" placeholder="输入施工现场安全负责人电话2" style="width: 330px" />
         </el-form-item>
 
         <el-form-item label="开始时间" prop="projectStartTime">
@@ -69,6 +65,7 @@
             type="date"
             value-format="YYYY-MM-DD"
             size="large"
+            placeholder="开始时间"
             style="width: 330px"
           />
         </el-form-item>
@@ -79,11 +76,16 @@
             type="date"
             value-format="YYYY-MM-DD"
             size="large"
+            placeholder="结束时间"
             style="width: 330px"
           />
         </el-form-item>
 
-        <el-form-item label="涉及工种" prop="involvedTrades" style="width: 87.2%">
+        <el-form-item label="施工人数" prop="workerCount">
+          <el-input-number v-model="formValue.workerCount" size="large" :min="1" style="width: 330px" />
+        </el-form-item>
+
+        <el-form-item label="所涉工种" prop="involvedTrades" style="width: 87.2%">
           <el-checkbox-group v-model="tradeArray">
             <el-checkbox
               v-for="t in ['水电', '泥瓦', '木工', '焊接', '气割', '登高', '密闭', '特种驾驶', '其他']"
@@ -97,37 +99,38 @@
           <el-input v-model="formValue.otherTrade" size="large" placeholder="请补充工种类型" style="width: 330px" />
         </el-form-item>
 
-        <el-form-item label="施工内容简述" prop="constructionContent" style="width: 87.2%">
+        <el-form-item label="工程施工内容(方案)简要描述" prop="constructionContent" style="width: 81%">
           <el-input
             type="textarea"
             v-model="formValue.constructionContent"
             size="large"
             :rows="3"
-            placeholder="简要描述施工方案"
+            placeholder="输入工程施工内容(方案)简要描述"
           />
         </el-form-item>
 
-        <el-form-item label="备注说明" prop="otherDescription" style="width: 87.2%">
+        <el-form-item label="其他说明" prop="otherDescription" style="width: 81%">
           <el-input
             type="textarea"
             v-model="formValue.otherDescription"
             size="large"
             :rows="3"
-            placeholder="其他补充说明"
+            placeholder="补充其他说明"
           />
         </el-form-item>
 
         <div style="width: 100%; height: 1px; background: #eee; margin: 20px 0"></div>
         <div style="width: 100%; margin-bottom: 20px; font-weight: bold; padding-left: 10px"
-          >附件上传清单(全项必填)</div
-        >
+          >附件上传清单(全项必填)</div>
 
         <el-form-item
           v-for="item in attachmentConfigs"
           :key="item.prop"
           :label="item.label"
+          label-width="240px"
           :prop="item.prop"
-          style="width: 43.6%"
+          class="label"
+          style="width: 43.6%;"
         >
           <UploadFiles
             label="上传文件"
@@ -175,18 +178,26 @@
   const tradeArray = ref<string[]>([]);
   const approvalOptions = ref<any[]>([]);
   const attachmentConfigs = [
-    { label: '施工安全交底', prop: 'safetyCommitmentAttachment' },
-    { label: '安全管理协议', prop: 'safetyAgreementAttachment' },
-    { label: '安全告知单', prop: 'safetyNoticeAttachment' },
-    { label: '施工方案', prop: 'constructionPlanAttachment' },
+    { label: '施工人员身份信息(复印件,施工单位盖章)', prop: 'personnelIdAttachment' },
+    
+    { label: '施工方提供施工安全交底(施工方敲章)', prop: 'safetyCommitmentAttachment' },
+
+    { label: '施工方提供施工人员安全教育(施工人员签字并敲章)', prop: 'safetyEducationAttachment' },
+
+    { label: '安全管理协议(双方签字两份,上飞院部门领导签甲方代表、乙方盖章并签字)', prop: 'safetyAgreementAttachment' },
+
+    { label: '施工作业环境承诺(上飞院的项目具体经办人签字)', prop: 'environmentCommitmentAttachment' },
+
+    { label: '安全告知单(部门具体经办人签字)', prop: 'safetyNoticeAttachment' },
+    
+    { label: '消防管理承诺书(部门具体经办人签字)', prop: 'fireManagementAttachment' },
+
+    { label: '施工方案(含风险识别、安全措施、应急预案等)', prop: 'constructionPlanAttachment' },
+    
     { label: '劳保用品清单', prop: 'ppeListAttachment' },
     { label: '施工机械清单', prop: 'equipmentListAttachment' },
-    { label: '人员身份信息', prop: 'personnelIdAttachment' },
-    { label: '安全教育记录', prop: 'safetyEducationAttachment' },
-    { label: '环境承诺书', prop: 'environmentCommitmentAttachment' },
-    { label: '消防管理承诺', prop: 'fireManagementAttachment' },
-    { label: '特种作业证', prop: 'specialWorkerCertAttachment' },
-    { label: '特种设备合格证', prop: 'specialEquipmentCertAttachment' },
+    { label: '若有特种施工人员提供特种作业证(复印件,施工单位盖章)', prop: 'specialWorkerCertAttachment' },
+    { label: '若有特种设备提供特种设备的合格证(复印件,施工单位盖章', prop: 'specialEquipmentCertAttachment' },
   ];
 
   const attachmentLists = reactive<any>(Object.fromEntries(attachmentConfigs.map((a) => [a.prop, []])));
@@ -231,9 +242,67 @@
     constructionLocation: [{ required: true, message: '请输入施工地点', trigger: 'blur' }],
     workerCount: [{ required: true, message: '请输入人数', trigger: 'blur' }],
     projectManagerName: [{ required: true, message: '请输入项目负责人', trigger: 'blur' }],
-    projectManagerPhone1: [{ required: true, message: '请输入电话', trigger: 'blur' }],
+    projectManagerPhone1: [
+        { required: true, message: '请输入电话', trigger: 'blur' },
+        {
+          validator: (_rule: any, value: any, callback: any) => {
+            if (!value) {
+                callback(new Error('请输入电话'));
+            } else if (!/^1[3-9]\d{9}$/.test(value)) {
+                callback(new Error('请输入有效的11位手机号'));
+            } else {
+                callback();
+            }
+          },
+          trigger: 'blur'
+        }
+    ],
+    projectManagerPhone2: [
+        { required: true, message: '请输入电话', trigger: 'blur' },
+        {
+          validator: (_rule: any, value: any, callback: any) => {
+            if (!value) {
+                callback(new Error('请输入电话'));
+            } else if (!/^1[3-9]\d{9}$/.test(value)) {
+                callback(new Error('请输入有效的11位手机号'));
+            } else {
+                callback();
+            }
+          },
+          trigger: 'blur'
+        }
+    ],
     siteSafetyManagerName: [{ required: true, message: '请输入安全负责人', trigger: 'blur' }],
-    siteSafetyPhone1: [{ required: true, message: '请输入电话', trigger: 'blur' }],
+    siteSafetyPhone1: [
+        { required: true, message: '请输入电话', trigger: 'blur' },
+        {
+          validator: (_rule: any, value: any, callback: any) => {
+            if (!value) {
+                callback(new Error('请输入电话'));
+            } else if (!/^1[3-9]\d{9}$/.test(value)) {
+                callback(new Error('请输入有效的11位手机号'));
+            } else {
+                callback();
+            }
+          },
+          trigger: 'blur'
+        }
+    ],
+    siteSafetyPhone2: [
+        { required: true, message: '请输入电话', trigger: 'blur' },
+        {
+          validator: (_rule: any, value: any, callback: any) => {
+            if (!value) {
+                callback(new Error('请输入电话'));
+            } else if (!/^1[3-9]\d{9}$/.test(value)) {
+                callback(new Error('请输入有效的11位手机号'));
+            } else {
+                callback();
+            }
+          },
+          trigger: 'blur'
+        }
+    ],
     projectStartTime: [{ required: true, message: '请选择开始时间', trigger: 'change' }],
     projectEndTime: [
       { required: true, message: '请选择结束时间', trigger: 'change' },
@@ -302,4 +371,9 @@
       }
     }
   }
+  .label{
+    :deep(.el-form-item__label){
+        line-height: 26px;
+    }
+  }
 </style>

+ 4 - 4
src/views/production-safety/risk-identification-and-control/construction-safety-manage/audit.vue

@@ -13,14 +13,14 @@
           <el-form-item label="项目名称">
             <el-input v-model="queryParams.queryParam.projectName" placeholder="搜索项目名称" style="width: 170px" />
           </el-form-item>
-          <el-form-item label="状态">
+          <!-- <el-form-item label="状态">
             <el-select v-model="queryParams.queryParam.status" clearable placeholder="状态" style="width: 170px">
               <el-option value="" label="全部" />
               <el-option :value="1" label="待提交" />
               <el-option :value="2" label="待审批" />
               <el-option :value="3" label="已完成" />
             </el-select>
-          </el-form-item>
+          </el-form-item> -->
           <el-form-item label="申请部门名称">
             <el-cascader
               v-model="queryParams.queryParam.departmentId"
@@ -29,7 +29,7 @@
               :options="firstLevelDepts"
               :props="cascaderProp"
               :show-all-levels="false"
-              placeholder="申请部门名称"
+              placeholder="部门名称"
               filterable
               @change="handleChangeDept"
             />
@@ -164,7 +164,7 @@
     pageNumber: 1,
     pageSize: 10,
     queryParam: {
-      status: '',
+      status: '1',
       projectName: '',
       constructionLocation: '',
       department: '',

+ 131 - 11
src/views/production-safety/risk-identification-and-control/construction-safety-manage/edit.vue

@@ -10,7 +10,8 @@
 
     <main class="safety-platform-container__main">
       <el-form ref="formRef" :inline="true" label-width="auto" :model="formValue" :rules="rules">
-        <el-form-item label="项目名称" prop="projectName">
+
+        <!-- <el-form-item label="项目名称" prop="projectName">
           <el-input v-model="formValue.projectName" size="large" placeholder="请输入项目名称" style="width: 330px" />
         </el-form-item>
 
@@ -117,6 +118,116 @@
 
         <el-form-item label="备注说明" prop="otherDescription" style="width: 87.2%">
           <el-input type="textarea" v-model="formValue.otherDescription" size="large" :rows="3" placeholder="选填" />
+        </el-form-item> -->
+        <el-form-item label="项目名称" prop="projectName">
+          <el-input v-model="formValue.projectName" size="large" placeholder="请输入项目名称" style="width: 330px" />
+        </el-form-item>
+
+        <el-form-item label="施工地点(区域)" prop="constructionLocation">
+          <el-input
+            v-model="formValue.constructionLocation"
+            size="large"
+            placeholder="请输入施工地点(区域)"
+            style="width: 330px"
+          />
+        </el-form-item>
+
+        <el-form-item label="施工单位名称" prop="constructionUnit">
+          <el-input
+            v-model="formValue.constructionUnit"
+            size="large"
+            placeholder="请输入施工单位名称"
+            style="width: 330px"
+          />
+        </el-form-item>
+
+        <el-form-item label="施工项目负责人" prop="projectManagerName">
+          <el-input v-model="formValue.projectManagerName" size="large" placeholder="输入施工项目负责人" style="width: 330px" />
+        </el-form-item>
+
+        <el-form-item label="施工项目负责人电话1" prop="projectManagerPhone1">
+          <el-input v-model="formValue.projectManagerPhone1" size="large" placeholder="输入施工项目负责人电话1" style="width: 330px" />
+        </el-form-item>
+
+        <el-form-item label="施工项目负责人电话2" prop="projectManagerPhone2">
+          <el-input v-model="formValue.projectManagerPhone2" size="large" placeholder="输入施工项目负责人电话2" style="width: 330px" />
+        </el-form-item>
+
+        <el-form-item label="施工现场安全负责人" prop="siteSafetyManagerName">
+          <el-input
+            v-model="formValue.siteSafetyManagerName"
+            size="large"
+            placeholder="输入施工现场安全负责人"
+            style="width: 330px"
+          />
+        </el-form-item>
+
+        <el-form-item label="施工现场安全负责人电话1" prop="siteSafetyPhone1">
+          <el-input v-model="formValue.siteSafetyPhone1" size="large" placeholder="输入施工现场安全负责人电话1" style="width: 330px" />
+        </el-form-item>
+
+        <el-form-item label="施工现场安全负责人电话2" prop="siteSafetyPhone2">
+          <el-input v-model="formValue.siteSafetyPhone2" size="large" placeholder="输入施工现场安全负责人电话2" style="width: 330px" />
+        </el-form-item>
+
+        <el-form-item label="开始时间" prop="projectStartTime">
+          <el-date-picker
+            v-model="formValue.projectStartTime"
+            type="date"
+            value-format="YYYY-MM-DD"
+            size="large"
+            placeholder="开始时间"
+            style="width: 330px"
+          />
+        </el-form-item>
+
+        <el-form-item label="结束时间" prop="projectEndTime">
+          <el-date-picker
+            v-model="formValue.projectEndTime"
+            type="date"
+            value-format="YYYY-MM-DD"
+            size="large"
+            placeholder="结束时间"
+            style="width: 330px"
+          />
+        </el-form-item>
+
+        <el-form-item label="施工人数" prop="workerCount">
+          <el-input-number v-model="formValue.workerCount" size="large" :min="1" style="width: 330px" />
+        </el-form-item>
+
+        <el-form-item label="所涉工种" prop="involvedTrades" style="width: 87.2%">
+          <el-checkbox-group v-model="tradeArray">
+            <el-checkbox
+              v-for="t in ['水电', '泥瓦', '木工', '焊接', '气割', '登高', '密闭', '特种驾驶', '其他']"
+              :key="t"
+              :label="t"
+            />
+          </el-checkbox-group>
+        </el-form-item>
+
+        <el-form-item v-if="tradeArray.includes('其他')" label="其他工种说明" prop="otherTrade">
+          <el-input v-model="formValue.otherTrade" size="large" placeholder="请补充工种类型" style="width: 330px" />
+        </el-form-item>
+
+        <el-form-item label="工程施工内容(方案)简要描述" prop="constructionContent" style="width: 81%">
+          <el-input
+            type="textarea"
+            v-model="formValue.constructionContent"
+            size="large"
+            :rows="3"
+            placeholder="输入工程施工内容(方案)简要描述"
+          />
+        </el-form-item>
+
+        <el-form-item label="其他说明" prop="otherDescription" style="width: 81%">
+          <el-input
+            type="textarea"
+            v-model="formValue.otherDescription"
+            size="large"
+            :rows="3"
+            placeholder="补充其他说明"
+          />
         </el-form-item>
 
         <div style="width: 100%; height: 1px; background: #eee; margin: 20px 0"></div>
@@ -126,6 +237,7 @@
           v-for="item in attachmentConfigs"
           :key="item.prop"
           :label="item.label"
+          label-width="240px"
           :prop="item.prop"
           style="width: 43.6%"
         >
@@ -183,18 +295,26 @@
     return formValue.status === 1 && formValue.rejectReason !== '';
   });
   const attachmentConfigs = [
-    { label: '施工安全交底', prop: 'safetyCommitmentAttachment' },
-    { label: '安全管理协议', prop: 'safetyAgreementAttachment' },
-    { label: '安全告知单', prop: 'safetyNoticeAttachment' },
-    { label: '施工方案', prop: 'constructionPlanAttachment' },
+    { label: '施工人员身份信息(复印件,施工单位盖章)', prop: 'personnelIdAttachment' },
+    
+    { label: '施工方提供施工安全交底(施工方敲章)', prop: 'safetyCommitmentAttachment' },
+
+    { label: '施工方提供施工人员安全教育(施工人员签字并敲章)', prop: 'safetyEducationAttachment' },
+
+    { label: '安全管理协议(双方签字两份,上飞院部门领导签甲方代表、乙方盖章并签字)', prop: 'safetyAgreementAttachment' },
+
+    { label: '施工作业环境承诺(上飞院的项目具体经办人签字)', prop: 'environmentCommitmentAttachment' },
+
+    { label: '安全告知单(部门具体经办人签字)', prop: 'safetyNoticeAttachment' },
+    
+    { label: '消防管理承诺书(部门具体经办人签字)', prop: 'fireManagementAttachment' },
+
+    { label: '施工方案(含风险识别、安全措施、应急预案等)', prop: 'constructionPlanAttachment' },
+    
     { label: '劳保用品清单', prop: 'ppeListAttachment' },
     { label: '施工机械清单', prop: 'equipmentListAttachment' },
-    { label: '人员身份信息', prop: 'personnelIdAttachment' },
-    { label: '安全教育记录', prop: 'safetyEducationAttachment' },
-    { label: '环境承诺书', prop: 'environmentCommitmentAttachment' },
-    { label: '消防管理承诺', prop: 'fireManagementAttachment' },
-    { label: '特种作业证', prop: 'specialWorkerCertAttachment' },
-    { label: '特种设备合格证', prop: 'specialEquipmentCertAttachment' },
+    { label: '若有特种施工人员提供特种作业证(复印件,施工单位盖章)', prop: 'specialWorkerCertAttachment' },
+    { label: '若有特种设备提供特种设备的合格证(复印件,施工单位盖章', prop: 'specialEquipmentCertAttachment' },
   ];
 
   const attachmentLists = reactive<any>(Object.fromEntries(attachmentConfigs.map((a) => [a.prop, []])));

+ 150 - 48
src/views/production-safety/risk-identification-and-control/construction-safety-manage/view.vue

@@ -9,91 +9,167 @@
     <el-alert v-if="showAlertBar" :title="formValue.rejectReason" type="error" />
 
     <main class="safety-platform-container__main">
-      <el-form ref="formRef" :inline="true" label-width="auto" :model="formValue" :disabled="true">
-        <el-form-item label="项目名称">
-          <el-input v-model="formValue.projectName" size="large" style="width: 330px" />
+      <el-form ref="formRef" :inline="true" label-width="auto" :model="formValue">
+        <el-form-item label="项目名称" prop="projectName">
+          <el-input v-model="formValue.projectName" size="large" :disabled="true" placeholder="请输入项目名称" style="width: 330px" />
         </el-form-item>
 
-        <el-form-item label="施工单位">
-          <el-input v-model="formValue.constructionUnit" size="large" style="width: 330px" />
+        <el-form-item label="施工地点(区域)" prop="constructionLocation">
+          <el-input
+            v-model="formValue.constructionLocation"
+            size="large"
+            :disabled="true"
+            placeholder="请输入施工地点(区域)"
+            style="width: 330px"
+          />
         </el-form-item>
 
-        <el-form-item label="施工地点">
-          <el-input v-model="formValue.constructionLocation" size="large" style="width: 330px" />
+        <el-form-item label="施工单位名称" prop="constructionUnit">
+          <el-input
+            v-model="formValue.constructionUnit"
+            size="large"
+            :disabled="true"
+            placeholder="请输入施工单位名称"
+            style="width: 330px"
+          />
         </el-form-item>
 
-        <el-form-item label="施工人数">
-          <el-input-number v-model="formValue.workerCount" size="large" style="width: 330px" />
+        <el-form-item label="施工项目负责人" prop="projectManagerName">
+          <el-input v-model="formValue.projectManagerName" :disabled="true" size="large" placeholder="输入施工项目负责人" style="width: 330px" />
         </el-form-item>
 
-        <el-form-item label="项目负责人">
-          <el-input v-model="formValue.projectManagerName" size="large" style="width: 330px" />
+        <el-form-item label="施工项目负责人电话1" prop="projectManagerPhone1">
+          <el-input v-model="formValue.projectManagerPhone1" :disabled="true" size="large" placeholder="输入施工项目负责人电话1" style="width: 330px" />
         </el-form-item>
 
-        <el-form-item label="负责人电话1">
-          <el-input v-model="formValue.projectManagerPhone1" size="large" style="width: 330px" />
+        <el-form-item label="施工项目负责人电话2" prop="projectManagerPhone2">
+          <el-input v-model="formValue.projectManagerPhone2" :disabled="true" size="large" placeholder="输入施工项目负责人电话2" style="width: 330px" />
         </el-form-item>
 
-        <el-form-item label="负责人电话2">
-          <el-input v-model="formValue.projectManagerPhone2" size="large" style="width: 330px" />
+        <el-form-item label="施工现场安全负责人" prop="siteSafetyManagerName">
+          <el-input
+            v-model="formValue.siteSafetyManagerName"
+            size="large"
+            :disabled="true"
+            placeholder="输入施工现场安全负责人"
+            style="width: 330px"
+          />
         </el-form-item>
 
-        <el-form-item label="现场安全员">
-          <el-input v-model="formValue.siteSafetyManagerName" size="large" style="width: 330px" />
+        <el-form-item label="施工现场安全负责人电话1" prop="siteSafetyPhone1">
+          <el-input v-model="formValue.siteSafetyPhone1" :disabled="true" size="large" placeholder="输入施工现场安全负责人电话1" style="width: 330px" />
         </el-form-item>
 
-        <el-form-item label="安全员电话1">
-          <el-input v-model="formValue.siteSafetyPhone1" size="large" style="width: 330px" />
+        <el-form-item label="施工现场安全负责人电话2" prop="siteSafetyPhone2">
+          <el-input v-model="formValue.siteSafetyPhone2" size="large" :disabled="true" placeholder="输入施工现场安全负责人电话2" style="width: 330px" />
         </el-form-item>
 
-        <el-form-item label="安全员电话2">
-          <el-input v-model="formValue.siteSafetyPhone2" size="large" style="width: 330px" />
+        <el-form-item label="开始时间" prop="projectStartTime">
+          <el-date-picker
+            v-model="formValue.projectStartTime"
+            type="date"
+            value-format="YYYY-MM-DD"
+            size="large"
+            :disabled="true"
+            placeholder="开始时间"
+            style="width: 330px"
+          />
         </el-form-item>
 
-        <el-form-item label="开始时间">
-          <el-date-picker v-model="formValue.projectStartTime" type="date" size="large" style="width: 330px" />
+        <el-form-item label="结束时间" prop="projectEndTime">
+          <el-date-picker
+            v-model="formValue.projectEndTime"
+            type="date"
+            value-format="YYYY-MM-DD"
+            size="large"
+            :disabled="true"
+            placeholder="结束时间"
+            style="width: 330px"
+          />
         </el-form-item>
 
-        <el-form-item label="结束时间">
-          <el-date-picker v-model="formValue.projectEndTime" type="date" size="large" style="width: 330px" />
+        <el-form-item label="施工人数" prop="workerCount">
+          <el-input-number v-model="formValue.workerCount" :disabled="true" size="large" :min="1" style="width: 330px" />
         </el-form-item>
 
-        <el-form-item label="涉及工种" style="width: 87.2%">
-          <el-checkbox-group v-model="tradeArray">
+        <el-form-item label="涉工种" prop="involvedTrades" style="width: 87.2%">
+          <el-checkbox-group v-model="tradeArray" :disabled="true">
             <el-checkbox
               v-for="t in ['水电', '泥瓦', '木工', '焊接', '气割', '登高', '密闭', '特种驾驶', '其他']"
               :key="t"
               :label="t"
+              :value="t"
             />
           </el-checkbox-group>
         </el-form-item>
 
-        <el-form-item v-if="tradeArray.includes('其他')" label="其他工种说明" style="width: 330px">
-          <el-input v-model="formValue.otherTrade" size="large" />
+        <el-form-item v-if="tradeArray.includes('其他')" label="其他工种说明" prop="otherTrade">
+          <el-input v-model="formValue.otherTrade" size="large" :disabled="true" placeholder="请补充工种类型" style="width: 330px" />
         </el-form-item>
 
-        <el-form-item label="施工内容简述" style="width: 87.2%">
-          <el-input type="textarea" v-model="formValue.constructionContent" size="large" :rows="3" />
+        <el-form-item label="工程施工内容(方案)简要描述" prop="constructionContent" style="width: 81%">
+          <el-input
+            type="textarea"
+            v-model="formValue.constructionContent"
+            size="large"
+            :rows="3"
+            :disabled="true"
+            placeholder="输入工程施工内容(方案)简要描述"
+          />
         </el-form-item>
 
-        <el-form-item label="备注说明" style="width: 87.2%">
-          <el-input type="textarea" v-model="formValue.otherDescription" size="large" :rows="3" />
+        <el-form-item label="其他说明" prop="otherDescription" style="width: 81%">
+          <el-input
+            type="textarea"
+            v-model="formValue.otherDescription"
+            size="large"
+            :rows="3"
+            :disabled="true"
+            placeholder="补充其他说明"
+          />
         </el-form-item>
 
         <div style="width: 100%; height: 1px; background: #eee; margin: 20px 0"></div>
         <div style="width: 100%; margin-bottom: 20px; font-weight: bold; padding-left: 10px">附件清单</div>
 
-        <el-form-item v-for="item in attachmentConfigs" :key="item.prop" :label="item.label" style="width: 43.6%">
-          <UploadFiles label="上传附件" :disabled="true" :fileList="attachmentLists[item.prop]" />
+        <el-form-item
+          v-for="item in attachmentConfigs"
+          :key="item.prop"
+          :label="item.label"
+          label-width="240px"
+          :prop="item.prop"
+          class="label"
+          style="width: 43.6%;"
+        >
+            <!-- 详情页面只展示,不需要上传 -->
+          <!-- <UploadFiles
+            label="上传文件"
+            :disabled="true"
+            :fileList="attachmentLists[item.prop]"
+          /> -->
+           <div class="file-list" v-if="attachmentLists[item.prop]?.length">
+                <div class="file-item" v-for="li in attachmentLists[item.prop]" :key="li.fileId">
+                <span class="file-item--name">{{ li.fileName }}</span>
+                <div class="file-item--footer">
+                    <el-button link type="primary" @click="previewOnline(li.fileUrl, li.fileType)"
+                    >预览</el-button
+                    >
+                    <el-button link type="primary" @click.stop="downloadFile(li.fileUrl, li.fileName)"
+                    >下载</el-button
+                    >
+                </div>
+                </div>
+            </div>
         </el-form-item>
 
         <div style="width: 100%; height: 1px; background: #eee; margin: 20px 0"></div>
         <el-form-item label="审批流程" style="width: 87.2%">
-          <el-select v-model="formValue.templateId" size="large" style="width: 330px">
+          <el-select v-model="formValue.templateId" size="large" :disabled="true" style="width: 330px">
             <el-option v-for="opt in approvalOptions" :key="opt.id" :label="opt.templateName" :value="opt.id" />
           </el-select>
         </el-form-item>
       </el-form>
+      <PreviewOnline ref="previewOnlineRef" />
     </main>
     <footer class="safety-platform-container__footer">
       <el-button @click="router.back()">返回</el-button>
@@ -108,25 +184,34 @@
   import { getAllApproval } from '@/api/approval/approval';
   import { constructionSafetyQueryDetailConstruction } from '@/api/production-safety/responsibility-implementation';
   import { unformatAttachment } from '@/components/UploadFiles/utils';
-
+  import PreviewOnline from '@/views/disaster/components/PreviewOnline.vue';
+  import { downloadFile } from '@/views/disaster/utils';
   const router = useRouter();
   const route = useRoute();
   const tradeArray = ref<string[]>([]);
   const approvalOptions = ref<any[]>([]);
 
   const attachmentConfigs = [
-    { label: '施工安全交底', prop: 'safetyCommitmentAttachment' },
-    { label: '安全管理协议', prop: 'safetyAgreementAttachment' },
-    { label: '安全告知单', prop: 'safetyNoticeAttachment' },
-    { label: '施工方案', prop: 'constructionPlanAttachment' },
+    { label: '施工人员身份信息(复印件,施工单位盖章)', prop: 'personnelIdAttachment' },
+    
+    { label: '施工方提供施工安全交底(施工方敲章)', prop: 'safetyCommitmentAttachment' },
+
+    { label: '施工方提供施工人员安全教育(施工人员签字并敲章)', prop: 'safetyEducationAttachment' },
+
+    { label: '安全管理协议(双方签字两份,上飞院部门领导签甲方代表、乙方盖章并签字)', prop: 'safetyAgreementAttachment' },
+
+    { label: '施工作业环境承诺(上飞院的项目具体经办人签字)', prop: 'environmentCommitmentAttachment' },
+
+    { label: '安全告知单(部门具体经办人签字)', prop: 'safetyNoticeAttachment' },
+    
+    { label: '消防管理承诺书(部门具体经办人签字)', prop: 'fireManagementAttachment' },
+
+    { label: '施工方案(含风险识别、安全措施、应急预案等)', prop: 'constructionPlanAttachment' },
+    
     { label: '劳保用品清单', prop: 'ppeListAttachment' },
     { label: '施工机械清单', prop: 'equipmentListAttachment' },
-    { label: '人员身份信息', prop: 'personnelIdAttachment' },
-    { label: '安全教育记录', prop: 'safetyEducationAttachment' },
-    { label: '环境承诺书', prop: 'environmentCommitmentAttachment' },
-    { label: '消防管理承诺', prop: 'fireManagementAttachment' },
-    { label: '特种作业证', prop: 'specialWorkerCertAttachment' },
-    { label: '特种设备合格证', prop: 'specialEquipmentCertAttachment' },
+    { label: '若有特种施工人员提供特种作业证(复印件,施工单位盖章)', prop: 'specialWorkerCertAttachment' },
+    { label: '若有特种设备提供特种设备的合格证(复印件,施工单位盖章', prop: 'specialEquipmentCertAttachment' },
   ];
 
   const attachmentLists = reactive<any>(Object.fromEntries(attachmentConfigs.map((a) => [a.prop, []])));
@@ -157,7 +242,12 @@
     templateId: '',
     status: '',
   });
-
+  const previewOnlineRef = ref<InstanceType<typeof PreviewOnline>>();
+  const previewOnline = (url: string | undefined, type) => {
+    if (url) {
+      previewOnlineRef.value?.open(url, type);
+    }
+  };
   const initData = async () => {
     const id = route.query.id as string;
     if (!id) return;
@@ -217,4 +307,16 @@
     //   color: #606266;
     // }
   }
+  .label{
+    :deep(.el-form-item__label){
+        line-height: 26px;
+    }
+  }
+  .file-list{
+    .file-item--name{
+        padding:6px 14px;
+        border:1px solid #efefef;
+        border-radius: 8px;
+    }
+  }
 </style>