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