From d0d78b9fbe144326f136ee048bb59d314413032e Mon Sep 17 00:00:00 2001 From: 马宇豪 <978517621@qq.com> Date: 星期二, 27 五月 2025 08:45:29 +0800 Subject: [PATCH] 修改导出 --- src/views/analyse/applyReview/components/reportDialog.vue | 199 +++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 166 insertions(+), 33 deletions(-) diff --git a/src/views/analyse/applyReview/components/reportDialog.vue b/src/views/analyse/applyReview/components/reportDialog.vue index 5724dfa..4837c74 100644 --- a/src/views/analyse/applyReview/components/reportDialog.vue +++ b/src/views/analyse/applyReview/components/reportDialog.vue @@ -24,7 +24,8 @@ <!-- <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}} +<!-- {{reportDialogState.experimentTypeList.find(i=>i.id === reportDialogState.reportForm.experimentType)?.name}}--> + {{typeValue}} </td> </tr> <tr> @@ -107,28 +108,11 @@ <div>{{item.siteType}}</div> </td> </tr> - <tr> - <td class="w-25 m-color required">评估人</td> - <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>--> - </tr> <tr class="m-color b-font" style="text-align: center">实验概况</tr> <tr> - <el-input type="textarea" :autosize="{ minRows: 3}" disabled v-model="reportDialogState.reportForm.experimentDesc" placeholder="(简要描述实验原理、实验步骤、所用试剂或材料设备等)" /> +<!-- <el-input type="textarea" :autosize="{ minRows: 3}" disabled v-model="reportDialogState.reportForm.experimentDesc" placeholder="(简要描述实验原理、实验步骤、所用试剂或材料设备等)" />--> + <el-input type="textarea" :autosize="{ minRows: 3}" disabled v-model="reportDialogState.reportForm.process" placeholder="(简要描述实验原理、实验步骤、所用试剂或材料设备等)" /> </tr> <tr class="m-color b-font" style="text-align: center">实验涉及的危险源</tr> <tr> @@ -160,17 +144,49 @@ </tr> <tr class="m-color b-font required" style="text-align: center">实验和实验项目综合风险等级评定</tr> <tr> - <td class="m-color" style="width: 100%"> + <td class="m-color" style="width: 100%;height: 65px"> <el-radio-group :disabled="reportDialogState.disabled" v-model="reportDialogState.reportForm.assessLevel"> - <el-radio :label="1">低风险(一级)</el-radio> - <el-radio :label="2">一般风险(二级)</el-radio> - <el-radio :label="3">较大风险(三级)</el-radio> - <el-radio :label="4">重大风险(四级)</el-radio> + <div style="display: flex;justify-content: center"> + <div style="display: flex;flex-direction: column"> + <el-radio :label="1">重大风险(一级)</el-radio> + <el-tag v-if="reportDialogState.reportForm.assessLevel == 1" class="tag-style tag-bg1" /> + </div> + <div style="display: flex;flex-direction: column"> + <el-radio :label="2">较大风险(二级)</el-radio> + <el-tag v-if="reportDialogState.reportForm.assessLevel == 2" class="tag-style tag-bg2" /> + </div> + <div style="display: flex;flex-direction: column"> + <el-radio :label="3">一般风险(三级)</el-radio> + <el-tag v-if="reportDialogState.reportForm.assessLevel == 3" class="tag-style tag-bg3" /> + </div> + <div style="display: flex;flex-direction: column"> + <el-radio :label="4">低风险(四级)</el-radio> + <el-tag v-if="reportDialogState.reportForm.assessLevel == 4" style="width: 43px;margin-left: 20px;" class="tag-bg4" /> + </div> + </div> </el-radio-group> </td> </tr> <tr> <el-input type="textarea" :autosize="{ minRows: 3}" :disabled="reportDialogState.disabled" v-model="reportDialogState.reportForm.description" placeholder="评定依据(必填)" /> + </tr> + <tr> + <td class="w-25 m-color required">评估人</td> + <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>--> </tr> <tr v-if="reportDialogState.reportForm.person?.length>0" class="m-color b-font" style="text-align: center">审批内容</tr> <template v-if="reportDialogState.reportForm.person?.length>0" v-for="item in reportDialogState.reportForm.person"> @@ -178,7 +194,8 @@ <td class="w-25 m-color">{{item.approveStage}}</td> <td class="w-25">{{item.approvePerson}}</td> <td class="w-25 m-color">审批结果</td> - <td class="w-25">{{item.approveStatus==1?'未审批':item.approveStatus==2?'通过':'未通过'}}</td> +<!-- <td class="w-25">{{item.approveStatus==1?'未审批':item.approveStatus==2?'通过':'未通过'}}</td>--> + <td class="w-25" :class="item.approveStatus==3?'redTit':''">{{item.approveStatus==1?'未审批':item.approveStatus==2?'通过':'未通过'}}</td> </tr> <tr> <td class="w-25 m-color autoheight">审批意见</td> @@ -193,6 +210,7 @@ <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="startGeneration()" size="default">导出评估报告</el-button> </span> </template> </el-dialog> @@ -207,10 +225,11 @@ import {userApi} from "/@/api/systemManage/user"; import {roomApi} from "/@/api/basic/room"; import {assessApplyApi} from "/@/api/analyse/assessApply"; - +import {generateWordDocument} from "/@/views/experiment/developing/components/exportWord.js"; const SelectDanger = defineAsyncComponent(() => import('./selectDanger.vue')) const selectDangerRef = ref() const reportFormRef = ref() +const typeValue = ref([]) const reportDialogState = reactive<ReportDialogType>({ title: '', disabled: false, @@ -235,7 +254,10 @@ riskSource: [], riskSourceType: [], description: '', - person: [] + person: [], + process:'', + experimentAndType: [], + oldRiskAssess: [] }, reportFormRules: { assessPerson: [{ required: true, message: '请填写评估人员', trigger: 'blur' }], @@ -253,7 +275,23 @@ {id: 4, name: '机电类'}, {id: 5, name: '特种设备类'}, {id: 6, name: '其它类'} - ] + ], + riskSourceTypeList: [ + {id: 1, name: '化学安全'}, + {id: 2, name: '辐射安全'}, + {id: 3, name: '生物安全'}, + {id: 4, name: '机电安全'}, + {id: 5, name: '电气安全'}, + {id: 6, name: '激光安全'}, + {id: 7, name: '特种设备安全'}, + {id: 8, name: '其他安全'}, + ], + riskLevelList: [ + {id: 1, name: '重大风险(一级)'}, + {id: 2, name: '较大风险(二级)'}, + {id: 3, name: '一般风险(三级)'}, + {id: 4, name: '低风险(四级)'}, + ], }) const showReportDialog = (title: string, value: ProjectType, allRoomList: RoomType []) => { @@ -302,6 +340,8 @@ reportDialogState.reportForm[i] = res.data.data[0][i]; } } + const arr = reportDialogState.reportForm.experimentAndType.map(item => item.type.experimentType) + typeValue.value = arr.join(',') console.log(reportDialogState.reportForm,'reportDialogState.reportForm') }else{ ElMessage({ @@ -374,10 +414,13 @@ const getPersonList = async () => { let res = await userApi().getUserList({ - roleId: 1, - usePage: false, - pageIndex: 1, - pageSize: 10 + pageIndex: 1, + pageSize: 99999, + searchParams:{ + roleId: null, + name: '', + realName: '' + } }); if(res.data.code === 100){ reportDialogState.systemPersonList = JSON.parse(JSON.stringify(res.data.data)); @@ -406,6 +449,76 @@ defineExpose({ showReportDialog, }); +const templatePath = '/static/exampleScience.docx' +const startGeneration = async () => { + const data = JSON.parse(JSON.stringify(reportDialogState.reportForm)) + const experimentTypeNameList = data.experimentAndType.map(item => { + return { + id: item.type.id, + experimentType: item.type.experimentType + } + }) + + const experimentTypeListExample = JSON.parse(JSON.stringify(reportDialogState.experimentTypeList)) + experimentTypeListExample.forEach(item => { + if(experimentTypeNameList.some(i => i.experimentType == item.name)){ + item.label = item.name + item.checked = false + }else { + item.label = item.name + item.checked = true + } + }) + data.typeList = experimentTypeListExample + data.depNameList = data.dep + const siteTest = data.experimentSite.map(item => item.siteName) + data.siteList = siteTest.join(',') + + const riskType = data.riskSourceType.filter(item => item.status == 1) + const riskListExample = reportDialogState.riskSourceTypeList + riskListExample.forEach(item => { + if(riskType.some(i => i.riskSourceType === item.name)){ + item.label = item.name + item.checked = false + }else { + item.label = item.name + item.checked = true + } + }) + data.riskList = riskListExample + + const level = data.assessLevel.toString().split(',') + const levelExample = JSON.parse(JSON.stringify(reportDialogState.riskLevelList)) + levelExample.forEach(item => { + if(level.some(i => i == item.id)){ + item.label = item.name + item.checked = false + }else { + item.label = item.name + item.checked = true + } + }) + data.riskLevel = levelExample + + data.tableData = data.oldRiskAssess ?data.oldRiskAssess: [] + + data.riskSource = data.riskSource ? data.riskSource.map(item => { + return { + ...item, + description: item.description ? item.description: '' + } + }) : [] + data.safeRiskAnalysis = data.safeRiskAnalysis ?data.safeRiskAnalysis : '' + + try { + generateWordDocument(templatePath, data, `材料科学姑苏实验室安全风险评估表---${data.experimentName}.docx`); + } catch (error){ + ElMessage({ + type: 'warning', + message: '失败' + }); + } +}; onMounted(() => { getAllPersonList(); @@ -501,6 +614,10 @@ width: 75%; } + &.redTit{ + color: red; + } + &.autoheight { min-height: 44px; height: auto; @@ -578,6 +695,22 @@ display: flex; justify-content: center; } +.tag-style{ + width: 58px; + margin-left: 20px; +} +.tag-bg1 { + background: rgba(255,0,0,0.65); +} +.tag-bg2 { + background: rgba(248,82,8,0.65); +} +.tag-bg3 { + background: rgba(247,255,0,0.65); +} +.tag-bg4 { + background: rgba(0,112,192,0.65); +} </style> -- Gitblit v1.9.2