From 36e71978a92ee64375b2c339e5e05d47b6b23fba Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: 星期五, 14 四月 2023 15:18:58 +0800
Subject: [PATCH] 修改接口和页面

---
 src/views/analyse/assessApply/components/reportDialog.vue |  329 +++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 210 insertions(+), 119 deletions(-)

diff --git a/src/views/analyse/assessApply/components/reportDialog.vue b/src/views/analyse/assessApply/components/reportDialog.vue
index ae84a4e..95b484d 100644
--- a/src/views/analyse/assessApply/components/reportDialog.vue
+++ b/src/views/analyse/assessApply/components/reportDialog.vue
@@ -1,11 +1,12 @@
 <template>
     <div class="system-menu-dialog-container">
         <el-dialog :title="reportDialogState.title" v-model="reportDialogState.reportDialogVisible" width="80%">
+          <div style="text-align: center;font-size: 20px;font-weight: bolder;color: #0c4995">{{reportDialogState.reportForm.experimentName}}实验安全风险评估报告表(带<span style="color: red">*</span>为填写内容)</div>
             <el-form ref="reportFormRef" :rules="reportDialogState.reportFormRules" :model="reportDialogState.reportForm" size="default" label-width="0">
                 <table class="report-table">
                     <th class="m-color b-font" style="text-align: center">实验基本信息</th>
                     <tr>
-                        <td class="w-25 m-color required">实验名称</td>
+                        <td class="w-25 m-color">实验名称</td>
                         <td class="w-75 m-color">
                             <el-form-item prop="experimentName">
                                 <el-input readonly v-model="reportDialogState.reportForm.experimentName" placeholder="请输入实验名称" />
@@ -13,79 +14,82 @@
                         </td>
                     </tr>
                     <tr>
-                        <td class="w-25 m-color required">实验类型</td>
-                        <td class="w-75 m-color">
-                            <el-radio-group style="text-align: center" disabled v-model="reportDialogState.reportForm.experimentType">
-                                <el-radio :label="1">化学类</el-radio>
-                                <el-radio :label="2">生物类</el-radio>
-                                <el-radio :label="3">辐射类</el-radio>
-                                <el-radio :label="4">机电类</el-radio>
-                                <el-radio :label="5">特种设备类</el-radio>
-                                <el-radio :label="6">其他类</el-radio>
-                            </el-radio-group>
+                        <td class="w-25 m-color">实验类型</td>
+                        <td class="w-75" style="text-align: left;padding-left: 11px">
+<!--                            <el-radio-group style="text-align: center" disabled v-model="reportDialogState.reportForm.experimentType">-->
+<!--                                <el-radio :label="1">化学类</el-radio>-->
+<!--                                <el-radio :label="2">生物类</el-radio>-->
+<!--                                <el-radio :label="3">辐射类</el-radio>-->
+<!--                                <el-radio :label="4">机电类</el-radio>-->
+<!--                                <el-radio :label="5">特种设备类</el-radio>-->
+<!--                                <el-radio :label="6">其他类</el-radio>-->
+<!--                            </el-radio-group>-->
+                            {{reportDialogState.experimentTypeList.find(i=>i.id === reportDialogState.reportForm.experimentType)?.name}}
                         </td>
                     </tr>
                     <tr>
-                      <td class="w-25 m-color required">负责人</td>
+                      <td class="w-25 m-color">负责人</td>
                       <td class="w-25 m-color">
-                        <el-select style="width: 100%" disabled v-model="reportDialogState.reportForm.liabilityUserId" clearable filterable @change="getLiabilityUserPhone($event)">
-                          <el-option
-                              v-for="item in reportDialogState.systemPersonList"
-                              :key="item.id"
-                              :value="item.id"
-                              :label="item.realName"
-                          ></el-option>
-                        </el-select>
+<!--                        <el-select style="width: 100%" disabled v-model="reportDialogState.reportForm.liabilityUserId" clearable filterable @change="getLiabilityUserPhone($event)">-->
+<!--                          <el-option-->
+<!--                              v-for="item in reportDialogState.systemPersonList"-->
+<!--                              :key="item.id"-->
+<!--                              :value="item.id"-->
+<!--                              :label="item.realName"-->
+<!--                          ></el-option>-->
+<!--                        </el-select>-->
+                        <el-input readonly v-model="reportDialogState.reportForm.personUser" />
                       </td>
-                      <td class="w-25 m-color required">电话</td>
+                      <td class="w-25 m-color">电话</td>
                       <td class="w-25 m-color">
-                        <el-input readonly v-model="reportDialogState.reportForm.liabilityUserPhone" />
+                        <el-input disabled v-model="reportDialogState.reportForm.personUserPhone" />
                       </td>
                     </tr>
                     <tr>
-                      <td class="w-25 m-color required">安全负责人</td>
+                      <td class="w-25 m-color">安全负责人</td>
                       <td class="w-25 m-color">
-                        <el-select v-if="reportDialogState.reportForm.safeLiabilityUserId" style="width: 100%" disabled v-model="reportDialogState.reportForm.safeLiabilityUserId" @change="getSafeLiabilityUserPhone($event)" clearable filterable>
-                          <el-option
-                              v-for="item in reportDialogState.allPersonList"
-                              :key="item.id"
-                              :value="item.id"
-                              :label="item.personName"
-                          ></el-option>
-                        </el-select>
-                        <el-input v-else disabled v-model="reportDialogState.reportForm.safeLiabilityUser" />
+<!--                        <el-select v-if="reportDialogState.reportForm.safeLiabilityUserId" style="width: 100%" disabled v-model="reportDialogState.reportForm.safeLiabilityUserId" @change="getSafeLiabilityUserPhone($event)" clearable filterable>-->
+<!--                          <el-option-->
+<!--                              v-for="item in reportDialogState.allPersonList"-->
+<!--                              :key="item.id"-->
+<!--                              :value="item.id"-->
+<!--                              :label="item.personName"-->
+<!--                          ></el-option>-->
+<!--                        </el-select>-->
+                        <el-input disabled v-model="reportDialogState.reportForm.safePersonUser" />
                       </td>
-                      <td class="w-25 m-color required">电话</td>
+                      <td class="w-25 m-color">电话</td>
                       <td class="w-25 m-color">
-                        <el-input readonly v-model="reportDialogState.reportForm.safeLiabilityUserPhone" />
+                        <el-input readonly v-model="reportDialogState.reportForm.safePersonUserPhone" />
                       </td>
                     </tr>
                     <tr>
-                      <td class="w-25 m-color required">部门</td>
+                      <td class="w-25 m-color">部门</td>
                       <td class="w-75 m-color">
                         <el-input readonly v-model="reportDialogState.reportForm.dep" />
                       </td>
                     </tr>
                     <tr class="m-color b-font" style="text-align: center">实验场所</tr>
                     <tr>
-                      <td class="w-14 m-color required">场所名称</td>
+                      <td class="w-14 m-color">场所名称</td>
                       <td class="w-14 m-color">所在楼栋</td>
                       <td class="w-14 m-color">房间</td>
                       <td class="w-14 m-color">有无消防设施</td>
                       <td class="w-14 m-color">有无隔断</td>
                       <td class="w-14 m-color">场所性质</td>
                     </tr>
-                    <tr v-for="(item,index) in reportDialogState.reportForm.siteList" :key="index">
+                    <tr v-for="(item,index) in reportDialogState.reportForm.experimentSite" :key="index">
                       <td class="w-14">
-                        <el-select disabled filterable v-model="item.siteId">
-                          <el-option
-                              v-for="item in reportDialogState.allRoomList"
-                              :key="item.id"
-                              :value="item.id"
-                              :label="item.siteName"
-                          >
-                          </el-option>
-                        </el-select>
+<!--                        <el-select disabled filterable v-model="item.siteId">-->
+<!--                          <el-option-->
+<!--                              v-for="item in reportDialogState.allRoomList"-->
+<!--                              :key="item.id"-->
+<!--                              :value="item.id"-->
+<!--                              :label="item.siteName"-->
+<!--                          >-->
+<!--                          </el-option>-->
+<!--                        </el-select>-->
+                        <el-input disabled v-model="item.siteName" />
                       </td>
                       <td class="w-14">
                         <el-input disabled v-model="item.floor" />
@@ -105,71 +109,75 @@
                     </tr>
                     <tr>
                       <td class="w-25 m-color required">评估人</td>
-                      <td class="w-25 m-color">
-                        <el-select style="width: 100%" :disabled="reportDialogState.disabled" v-model="reportDialogState.reportForm.assessUserId" clearable filterable>
-                          <el-option
-                              v-for="item in reportDialogState.allPersonList"
-                              :key="item.id"
-                              :value="item.id"
-                              :label="item.personName"
-                          ></el-option>
-                        </el-select>
+                      <td class="w-75 m-color">
+<!--                        <el-select style="width: 100%" :disabled="reportDialogState.disabled" v-model="reportDialogState.reportForm.assessPerson" clearable filterable>-->
+<!--                          <el-option-->
+<!--                              v-for="item in reportDialogState.allPersonList"-->
+<!--                              :key="item.id"-->
+<!--                              :value="item.id"-->
+<!--                              :label="item.personName"-->
+<!--                          ></el-option>-->
+<!--                        </el-select>-->
+                        <el-input :disabled="reportDialogState.disabled" v-model="reportDialogState.reportForm.assessPerson" placeholder="评估人" />
                       </td>
-                      <td class="w-25 m-color required">评估时间</td>
-                      <td class="w-25 m-color">
-                        <el-date-picker :disabled="reportDialogState.disabled"  type="datetime" format="YYYY/MM/DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" v-model="reportDialogState.reportForm.assessTime" />
-                      </td>
+<!--                      <td class="w-25 m-color required">评估时间</td>-->
+<!--                      <td class="w-25 m-color">-->
+<!--                        <el-date-picker :disabled="reportDialogState.disabled"  type="datetime" format="YYYY/MM/DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" v-model="reportDialogState.reportForm.assessTime" />-->
+<!--                      </td>-->
                     </tr>
 
                     <tr class="m-color b-font" style="text-align: center">实验概况</tr>
                     <tr>
-                        <el-input type="textarea" :autosize="{ minRows: 3}" :disabled="reportDialogState.disabled" v-model="reportDialogState.reportForm.experimentDesc" placeholder="(简要描述实验原理、实验步骤、所用试剂或材料设备等)" />
+                        <el-input type="textarea" :autosize="{ minRows: 3}" disabled v-model="reportDialogState.reportForm.experimentDesc" placeholder="(简要描述实验原理、实验步骤、所用试剂或材料设备等)" />
                     </tr>
                     <tr class="m-color b-font" style="text-align: center">实验涉及的危险源</tr>
                     <tr>
-                      <td class="w-25 m-color required">危险源种类</td>
+                      <td class="w-25 m-color">危险源种类</td>
                       <td class="w-75 m-color">
-                        <el-radio-group :disabled="reportDialogState.disabled"  v-model="reportDialogState.reportForm.dangerSource">
-                          <el-radio :label="1">化学安全</el-radio>
-                          <el-radio :label="2">辐射安全</el-radio>
-                          <el-radio :label="3">特种设备安全</el-radio>
-                          <el-radio :label="4">机电安全</el-radio>
-                          <el-radio :label="5">电气安全</el-radio>
-                          <el-radio :label="6">生物安全</el-radio>
-                          <el-radio :label="7">激光安全</el-radio>
-                          <el-radio :label="8">其他安全</el-radio>
-                        </el-radio-group>
+<!--                        <el-radio-group disabled v-model="reportDialogState.reportForm.dangerSource">-->
+<!--                          <el-radio :label="1">化学安全</el-radio>-->
+<!--                          <el-radio :label="2">辐射安全</el-radio>-->
+<!--                          <el-radio :label="3">特种设备安全</el-radio>-->
+<!--                          <el-radio :label="4">机电安全</el-radio>-->
+<!--                          <el-radio :label="5">电气安全</el-radio>-->
+<!--                          <el-radio :label="6">生物安全</el-radio>-->
+<!--                          <el-radio :label="7">激光安全</el-radio>-->
+<!--                          <el-radio :label="8">其他安全</el-radio>-->
+<!--                        </el-radio-group>-->
+                        <el-checkbox-group disabled>
+                          <el-checkbox v-for="item in reportDialogState.reportForm.riskSourceType" :label="item.riskSourceType" :checked="item.status==1?true:false"/>
+                        </el-checkbox-group>
                       </td>
                     </tr>
                     <select-danger ref="selectDangerRef" v-model:data="reportDialogState.reportForm.riskSource" v-model:disabled="reportDialogState.disabled"></select-danger>
-                    <tr class="m-color b-font" style="text-align: center">安全风险分析(总结)</tr>
+                    <tr class="m-color b-font required" style="text-align: center">安全风险分析(总结)</tr>
                     <tr>
                       <el-input type="textarea" :autosize="{ minRows: 3}" :disabled="reportDialogState.disabled" v-model="reportDialogState.reportForm.safeRiskAnalysis" placeholder="1.实验过程中是否有爆炸、火灾、腐蚀、中毒风险、产生危险废弃物等(根据危险源清单,分析实验过程中可能对人身安全、人体健康、实验室环境和周边环境等带来的负面影响)" />
                     </tr>
                     <tr class="m-color b-font" style="text-align: center">拟采取的防护和应急措施</tr>
                     <tr>
-                      <el-input type="textarea" :autosize="{ minRows: 3}" :disabled="reportDialogState.disabled" v-model="reportDialogState.reportForm.emergencyMeasure" placeholder="" />
+                      <el-input type="textarea" :autosize="{ minRows: 3}" disabled v-model="reportDialogState.reportForm.emergencyMeasure" placeholder="" />
                     </tr>
-                    <tr class="m-color b-font" style="text-align: center">实验和实验项目综合风险等级评定</tr>
+                    <tr class="m-color b-font required" style="text-align: center">实验和实验项目综合风险等级评定</tr>
                     <tr>
                       <td class="m-color" style="width: 100%">
                         <el-radio-group :disabled="reportDialogState.disabled"  v-model="reportDialogState.reportForm.assessLevel">
-                          <el-radio :label="4">重大风险(一级)</el-radio>
-                          <el-radio :label="3">较大风险(二级)</el-radio>
-                          <el-radio :label="2">一般风险(三级)</el-radio>
-                          <el-radio :label="1">低风险(四级)</el-radio>
+                          <el-radio :label="1">低风险(一级)</el-radio>
+                          <el-radio :label="2">一般风险(二级)</el-radio>
+                          <el-radio :label="3">较大风险(三级)</el-radio>
+                          <el-radio :label="4">重大风险(四级)</el-radio>
                         </el-radio-group>
                       </td>
                     </tr>
                     <tr>
-                      <el-input type="textarea" :autosize="{ minRows: 3}" :disabled="reportDialogState.disabled" v-model="reportDialogState.reportForm.reskLevelReason" placeholder="请输入评定依据" />
+                      <el-input type="textarea" :autosize="{ minRows: 3}" :disabled="reportDialogState.disabled" v-model="reportDialogState.reportForm.description" placeholder="评定依据(必填)" />
                     </tr>
                 </table>
             </el-form>
             <template #footer>
               <span class="dialog-footer" style="padding-top:10px;text-align: center !important;">
                 <el-button @click="reportDialogState.reportDialogVisible = !reportDialogState.reportDialogVisible" size="default">取 消</el-button>
-                <el-button type="primary" v-if="!reportDialogState.disabled" @click="onSubmitProject" size="default">提交审批</el-button>
+                <el-button type="primary" v-if="!reportDialogState.disabled" @click="onSubmitProject()" size="default">提交审批</el-button>
               </span>
             </template>
         </el-dialog>
@@ -183,6 +191,7 @@
 import {personApi} from "/@/api/basic/person";
 import {userApi} from "/@/api/systemManage/user";
 import {roomApi} from "/@/api/basic/room";
+import {assessApplyApi} from "/@/api/analyse/assessApply";
 
 const SelectDanger = defineAsyncComponent(() => import('./selectDanger.vue'))
 const selectDangerRef = ref()
@@ -191,30 +200,49 @@
     title: '',
     disabled: false,
     reportDialogVisible: false,
-    reportForm:   {
+    reportForm: {
         id: null,
         experimentName: "",
         experimentType: null,
-        liabilityUserId: null,
-        liabilityUserPhone: '',
-        safeLiabilityUserId: null,
-        safeLiabilityUser: '',
-        safeLiabilityUserPhone: '',
+        personUser: '',
+        personUserId: null,
+        personUserPhone: '',
+        safePersonUserId: null,
+        safePersonUser: '',
+        safePersonUserPhone: '',
         dep: "",
-        siteList: [],
+        experimentSite: [],
         experimentDesc: '',
-        safeRiskAnalysis: '',
         emergencyMeasure: '',
+        assessPerson:'',
+        safeRiskAnalysis: '',
         assessLevel:null,
-        riskSource: []
+        riskSource: [],
+        riskSourceType: [],
+        description: '',
+        person:[]
     },
-    reportFormRules: {},
+    reportFormRules: {
+      assessPerson: [{ required: true, message: '请填写评估人员', trigger: 'blur' }],
+      safeRiskAnalysis: [{ required: true, message: '请填写安全风险分析', trigger: 'blur' }],
+      assessLevel: [{ required: true, message: '请选择风险等级评定', trigger: 'blur' }],
+      description: [{ required: true, message: '请填写风险等级评定依据', trigger: 'blur' }],
+    },
     allPersonList: [],
     allRoomList: [],
     systemPersonList: [],
+    experimentTypeList: [
+      {id: 1, name: '化学类'},
+      {id: 2, name: '生物类'},
+      {id: 3, name: '辐射类'},
+      {id: 4, name: '机电类'},
+      {id: 5, name: '特种设备类'},
+      {id: 6, name: '其它类'}
+    ]
 })
 
 const showReportDialog = (title: string, value: ProjectType, allRoomList: RoomType []) => {
+    getReportData(value.id)
     reportDialogState.reportDialogVisible = true;
     reportDialogState.allRoomList = allRoomList
     setTimeout(() => {
@@ -223,19 +251,22 @@
     if(title === '提交'){
       reportDialogState.title = '提交报告';
       reportDialogState.disabled = false
-      for(let i in reportDialogState.reportForm) {
-        if(isValidKey(i, reportDialogState.reportForm)) {
-          reportDialogState.reportForm[i] = value[i];
-        }
-      }
+      // for(let i in reportDialogState.reportForm) {
+      //   if(isValidKey(i, reportDialogState.reportForm)) {
+      //     reportDialogState.reportForm[i] = value[i];
+      //   }
+      // }
+    }else if(title === '修改'){
+      reportDialogState.title = '修改报告';
+      reportDialogState.disabled = false
     }else{
         reportDialogState.title = '查看';
         reportDialogState.disabled = true
-        for(let i in reportDialogState.reportForm) {
-            if(isValidKey(i, reportDialogState.reportForm)) {
-                reportDialogState.reportForm[i] = value[i];
-            }
-        }
+        // for(let i in reportDialogState.reportForm) {
+        //     if(isValidKey(i, reportDialogState.reportForm)) {
+        //         reportDialogState.reportForm[i] = value[i];
+        //     }
+        // }
     }
 };
 
@@ -243,33 +274,85 @@
     return key in object;
 };
 
-const getLiabilityUserPhone = (value: number)=>{
-  const data = reportDialogState.systemPersonList.find(item => item.id === value) as AllPersonListType
-  reportDialogState.reportForm.liabilityUserPhone = data.phone
-}
-
-const getSafeLiabilityUserPhone = (value: number)=>{
-  const data = reportDialogState.allPersonList.find(item => item.id === value) as AllPersonListType
-  reportDialogState.reportForm.safeLiabilityUserPhone = data.phone
-}
-
-const hasSafeSystem = (value: number) =>{
-  if(value == 2){
-    reportDialogState.reportForm.safeInformationSystem = ''
+const getReportData = async (id:number|null|undefined) => {
+  let res = await assessApplyApi().getRiskReportPage({
+    experimentId: id,
+    pageIndex: 1,
+    pageSize: 10,
+    tag: 3
+  });
+  if(res.data.code === 100){
+    reportDialogState.reportForm = {
+      id: null,
+      experimentName: "",
+      experimentType: null,
+      personUser: '',
+      personUserId: null,
+      personUserPhone: '',
+      safePersonUserId: null,
+      safePersonUser: '',
+      safePersonUserPhone: '',
+      dep: "",
+      experimentSite: [],
+      experimentDesc: '',
+      emergencyMeasure: '',
+      assessPerson:'',
+      safeRiskAnalysis: '',
+      assessLevel:null,
+      riskSource: [],
+      riskSourceType: [],
+      description: '',
+      person:[]
+    }
+    if(res.data.data&&res.data.data.length==0){
+      ElMessage({
+        type: 'warning',
+        message: '暂时无法获取实验信息,可能与用户身份有关'
+      });
+    }else{
+      for(let i in reportDialogState.reportForm) {
+        if(isValidKey(i, reportDialogState.reportForm)) {
+          reportDialogState.reportForm[i] = res.data.data[0][i];
+        }
+      }
+    }
+  }else{
+    ElMessage({
+      type: 'warning',
+      message: res.data.msg
+    });
   }
-}
+};
+
+// const getLiabilityUserPhone = (value: number)=>{
+//   const data = reportDialogState.systemPersonList.find(item => item.id === value) as AllPersonListType
+//   reportDialogState.reportForm.liabilityUserPhone = data.phone
+// }
+//
+// const getSafeLiabilityUserPhone = (value: number)=>{
+//   const data = reportDialogState.allPersonList.find(item => item.id === value) as AllPersonListType
+//   reportDialogState.reportForm.safeLiabilityUserPhone = data.phone
+// }
+
+// const hasSafeSystem = (value: number) =>{
+//   if(value == 2){
+//     reportDialogState.reportForm.safeInformationSystem = ''
+//   }
+// }
 
 const onSubmitProject = () => {
     reportFormRef.value.validate(async(valid: boolean) => {
         if(valid){
-            if(reportDialogState.title === '新增'){
-                let res = await projectApi().addDevelop(reportDialogState.reportForm);
+          const { id,assessPerson,safeRiskAnalysis,assessLevel,description } = reportDialogState.reportForm
+          const data = { id,assessPerson,safeRiskAnalysis,assessLevel,description }
+            if(reportDialogState.title === '提交报告'){
+                let res = await assessApplyApi().updateRiskReport(data);
                 if(res.data.code === 100){
                     emit('refresh')
                     reportDialogState.reportDialogVisible = false;
                     ElMessage({
                         type: 'success',
-                        message: '新增成功'
+                        message: '提交报告成功'
                     })
                 }else{
                     ElMessage({
@@ -278,13 +361,13 @@
                     });
                 }
             }else{
-                let res = await projectApi().modProject(reportDialogState.reportForm)
+                let res = await assessApplyApi().updateRiskReportInfo(data)
                 if(res.data.code === 100){
                   emit('refresh')
                   reportDialogState.reportDialogVisible = false;
                   ElMessage({
                     type: 'success',
-                    message: '整改已提交'
+                    message: '修改报告成功'
                   })
                 }else{
                   ElMessage({
@@ -366,6 +449,14 @@
     line-height: 42px;
     border-bottom: 1px solid #ccc;
 
+  &.required {
+    &::before {
+      content: "*";
+      display: inline-block;
+      color: red;
+    }
+  }
+
 &:last-of-type {
      border-bottom: none;
  }

--
Gitblit v1.9.2