<template> <el-dialog v-model="visible" title="作业票信息"> <div id="printContent"> <table class="archive_print_table"> <thead> <tr> <td colspan="10" style="border: none"> <el-divider content-position="left"> 动土安全作业票 </el-divider> <div class="tr">编号:{{ data.info.CHECK_NO }}</div> </td> </tr> </thead> <tr> <td class="title">申请单位</td> <td>{{ data.info.APPLY_DEPARTMENT_NAME }}</td> <td class="title" colspan="2">作业申请时间</td> <td colspan="2">{{ data.info.CREATTIME }}</td> </tr> <tr> <td class="title">作业单位</td> <td>{{ data.info.CONFIRM_DEPARTMENT_NAME }}</td> <td class="title">作业地点</td> <td>{{ data.info.WORK_PLACE }}</td> <td class="title">作业内容</td> <td>{{ data.info.JOB_CONTENT }}</td> </tr> <tr> <td class="title">监护人</td> <td> <img v-for="(item, index) in data.signs.GUARDIAN?.[0].SIGN_PATH" :key="index" v-viewer :src="VITE_FILE_URL + item" alt="" width="20" height="20" class="mr-10 mt-10" /> </td> <td class="title" colspan="2">作业负责人</td> <td colspan="2"> <img v-for="(item, index) in data.signs.CONFIRM?.[0].SIGN_PATH" :key="index" v-viewer :src="VITE_FILE_URL + item" alt="" width="20" height="20" class="mr-10 mt-10" /> </td> </tr> <tr> <td class="title">关联的其他特殊作业及安全作业票编号</td> <td colspan="5">{{ data.info.SPECIAL_WORK }}</td> </tr> <tr> <td colspan="6"> <div> 作业内容、范围、方式(包括深度、面积,并附简图):{{ data.info.WORK_CONTENT }} </div> <div v-if="data.info.CONTENT_IMG_PATH" style=" display: flex; justify-content: space-between; margin-top: 20px; " > <img v-viewer :src="VITE_FILE_URL + data.info.CONTENT_IMG_PATH" alt="" width="20" height="20" class="mr-10 mt-10" /> <div> 签字: <img v-for="(item, index) in data.signs.WORK_USER?.[0].SIGN_PATH" :key="index" v-viewer :src="VITE_FILE_URL + item" alt="" width="20" height="20" class="mr-10 mt-10" /> <span>{{ data.signs.CONFESS?.[0].SIGN_TIME[index] }}</span> </div> </div> </td> </tr> <tr> <td class="title">风险辨识结果</td> <td colspan="5"> {{ data.info.RISK_IDENTIFICATION?.split(";_;")[0] }} </td> </tr> <tr> <td class="title">作业实施时间</td> <td colspan="5"> {{ data.info.WORK_START_DATE }}至{{ data.info.WORK_END_DATE }}止 </td> </tr> <tr> <td colspan="11"> <table class="archive_print_table"> <tr> <td style="width: 80px">序号</td> <td>安全措施</td> <td style="width: 100px">是否涉及</td> <td style="width: 100px">确认人</td> </tr> <tr v-for="(item, index) in data.measuresList" :key="index"> <td>{{ index + 1 }}</td> <td> {{ item.PROTECTIVE_MEASURES }} <div v-if="item.IMG_PATH" class="mt-10"> <template v-for="img in item.IMG_PATH.split(',')" :key="img" > <img v-viewer :src="VITE_FILE_URL + img" alt="" width="20" height="20" class="mr-10 mt-10" /> </template> </div> </td> <td> <span v-if="item.STATUS === '1'"> 涉 及 </span> <span v-if="item.STATUS === '-1'"> 不涉及 </span> </td> <td> <img v-if="item.SIGN_PATH" v-viewer :src="VITE_FILE_URL + item.SIGN_PATH" alt="" width="20" height="20" class="mr-10 mt-10" /> </td> </tr> <template v-if="data.signs.MEASURES_CONFIRM"> <tr v-for="(item, index) in data.signs.MEASURES_CONFIRM" :key="item.BUS_BREAKGROUND_MEASURES_ID" > <td>{{ data.measuresList.length + 1 + index }}</td> <td colspan="2"> <div style="display: flex; justify-content: space-between"> <span> 其他安全措施: {{ item.DESCR }} </span> </div> </td> <td> <img v-if="item.SIGN_PATH?.[0]" v-viewer :src="VITE_FILE_URL + item.SIGN_PATH?.[0]" alt="" width="20" height="20" /> </td> </tr> </template> </table> </td> </tr> <tr v-if="data.signs.CONFESS"> <td colspan="11"> <div> 安全交底人: <div v-if="data.signs.CONFESS?.[0].IMG_PATH?.[0]"> <template v-for="img in data.signs.CONFESS?.[0].IMG_PATH" :key="img" > <img v-viewer :src="VITE_FILE_URL + img" alt="" width="20" height="20" class="mr-10 mt-10" /> </template> </div> </div> <div v-for="(item, index) in data.signs.CONFESS?.[0].SIGN_TIME" :key="index" class="tr" > <span>签字:</span> <img v-viewer :src="VITE_FILE_URL + data.signs.CONFESS?.[0].SIGN_PATH[index]" alt="" width="20" height="20" class="mr-10 mt-10" /> <span>{{ data.signs.CONFESS?.[0].SIGN_TIME[index] }}</span> </div> </td> </tr> <tr v-if="data.signs.ACCEPT_CONFESS"> <td colspan="11"> <div>接受交底人:</div> <div v-for="(item, index) in data.signs.ACCEPT_CONFESS?.[0].SIGN_TIME" :key="index" class="tr" > <span>签字:</span> <img v-viewer :src=" VITE_FILE_URL + data.signs.ACCEPT_CONFESS?.[0].SIGN_PATH[index] " alt="" width="20" height="20" class="mr-10 mt-10" /> <span>{{ data.signs.ACCEPT_CONFESS?.[0].SIGN_TIME[index] }}</span> </div> </td> </tr> <tr v-if="data.signs.CONFIRM"> <td colspan="11"> <div>作业负责人意见:{{ data.signs.CONFIRM?.[0].DESCR }}</div> <div v-for="(item, index) in data.signs.CONFIRM?.[0].SIGN_TIME" :key="index" class="tr" > <span>签字:</span> <img v-viewer :src="VITE_FILE_URL + data.signs.CONFIRM?.[0].SIGN_PATH[index]" alt="" width="20" height="20" class="mr-10 mt-10" /> <span>{{ data.signs.CONFIRM?.[0].SIGN_TIME[index] }}</span> </div> </td> </tr> <tr v-if="data.signs.LEADER"> <td colspan="11"> <div>所在单位意见:{{ data.signs.LEADER?.[0].DESCR }}</div> <div v-for="(item, index) in data.signs.LEADER?.[0].SIGN_TIME" :key="index" class="tr" > <span>签字:</span> <img v-viewer :src="VITE_FILE_URL + data.signs.LEADER?.[0].SIGN_PATH[index]" alt="" width="20" height="20" class="mr-10 mt-10" /> <span>{{ data.signs.LEADER?.[0].SIGN_TIME[index] }}</span> </div> </td> </tr> <tr v-if="data.signs.SAFETY"> <td colspan="6"> <div> 有关水、电、汽、工艺、设备、消防、安全等部门会签意见:{{ data.signs.SAFETY?.[0].DESCR }} </div> <div v-for="(item, index) in data.signs.SAFETY?.[0].SIGN_TIME" :key="index" class="tr" > <div class="tr"> <span>签字:</span> <img v-viewer :src="VITE_FILE_URL + data.signs.SAFETY?.[0].SIGN_PATH[index]" alt="" width="20" height="20" class="mr-10 mt-10" /> <span>{{ data.signs.SAFETY?.[0].SIGN_TIME[index] }}</span> </div> </div> </td> </tr> <tr v-if="data.signs.APPROVE"> <td colspan="6"> <div>审批部门意见:{{ data.signs.APPROVE?.[0].DESCR }}</div> <div v-for="(item, index) in data.signs.APPROVE?.[0].SIGN_TIME" :key="index" class="tr" > <div class="tr"> <span>签字:</span> <img v-viewer :src=" VITE_FILE_URL + data.signs.APPROVE?.[0].SIGN_PATH[index] " alt="" width="20" height="20" class="mr-10 mt-10" /> <span>{{ data.signs.APPROVE?.[0].SIGN_TIME[index] }}</span> </div> </div> </td> </tr> <tr v-if="data.signs.ACCEPT"> <td colspan="11"> <div>完工验收:{{ data.signs.ACCEPT?.[0].DESCR }}</div> <div v-for="(item, index) in data.signs.ACCEPT?.[0].SIGN_TIME" :key="index" class="tr" > <span>签字:</span> <img v-viewer :src="VITE_FILE_URL + data.signs.ACCEPT?.[0].SIGN_PATH[index]" alt="" width="20" height="20" class="mr-10 mt-10" /> <span>{{ data.signs.ACCEPT?.[0].SIGN_TIME[index] }}</span> </div> </td> </tr> </table> </div> <template #footer> <el-button @click="fnClose">关闭</el-button> </template> </el-dialog> </template> <script setup> import { useVModels } from "@vueuse/core"; import { reactive } from "vue"; import { findCharIndex } from "@/assets/js/utils.js"; const props = defineProps({ visible: { type: Boolean, required: true, default: false, }, pd: { type: Object, required: true, default: () => ({}), }, }); const VITE_FILE_URL = import.meta.env.VITE_FILE_URL; const data = reactive({ info: {}, measuresList: [], gasList: [], signs: [], }); const fnInit = () => { data.info = props.pd.pd; const measuresList = props.pd.measuresList; for (let i = 0; i < measuresList.length; i++) { const PROTECTIVE_MEASURES = measuresList[i].PROTECTIVE_MEASURES.split(""); for (let j = 1; j <= 3; j++) { if (findCharIndex(PROTECTIVE_MEASURES, "(", j) !== -1) { PROTECTIVE_MEASURES.splice( findCharIndex(PROTECTIVE_MEASURES, "(", j) + 1, 0, measuresList[i]["ANSWER" + j] ); } } measuresList[i].PROTECTIVE_MEASURES = PROTECTIVE_MEASURES.join(""); } data.measuresList = measuresList; data.gasList = props.pd.gasList; data.signs = props.pd.signs; }; fnInit(); const emits = defineEmits(["update:visible"]); const { visible } = useVModels(props, emits); const fnClose = () => { visible.value = false; }; </script> <style lang="scss" scoped></style>