qa-prevention-xgf-app/components/hiddenView/index.vue

463 lines
13 KiB
Vue

<template>
<u-cell-group>
<u-cell :title="data.info.HIDDENDESCR" />
<u-cell title="隐患来源" :value="hiddenSource[data.info.SOURCE]" />
<block v-if="data.info.SOURCE === '2'">
<u-cell title="风险点(单元)" :value="data.info.RISK_UNIT" />
<u-cell title="辨识部位" :value="data.info.IDENTIFICATION" />
<u-cell title="存在风险" :value="data.info.RISK_DESCR" />
<u-cell title="风险分级" :value="data.info.LEVEL" />
<u-cell title="检查内容" :value="data.info.CHECK_CONTENT" />
</block>
<u-cell title="隐患上报位置(经纬度)">
<template #label>
<view v-if="data.info.LONGITUDE && data.info.LATITUDE">
<view>经度:{{ data.info.LONGITUDE }}</view>
<view>纬度:{{ data.info.LATITUDE }}</view>
</view>
</template>
</u-cell>
<u-cell
title="隐患部位"
:value="data.info.hregionName || data.info.HIDDENPART"
/>
<u-cell title="隐患位置描述" :value="data.info.POSITIONDESC" />
<u-cell title="隐患类型" :value="data.info.HIDDENTYPENAME" />
<u-cell title="隐患级别" :value="data.info.HIDDENLEVELNAME" />
<u-cell
title="隐患发现人"
:value="data.hiddenFindPeople.map((item) => item.NAME).join('、')"
/>
<u-cell
title="隐患发现时间"
:value="fnFormatTime(data.info.DISCOVERYTIME)"
/>
<u-cell title="整改类型">
<template #value>
<text v-if="data.info.RECTIFICATIONTYPE === '1'">立即整改</text>
<text v-else-if="data.info.RECTIFICATIONTYPE === '2'">限期整改</text>
</template>
</u-cell>
<u-cell title="整改负责部门" :value="data.info.editDeptName" />
<u-cell title="整改负责人" :value="data.info.editUserName" />
<block v-if="data.info.RECTIFICATIONTYPE === '2'">
<u-cell title="整改期限" :value="data.info.editRectificationDeadline" />
</block>
<u-cell title="是否相关方">
<template #value>
<text v-if="data.info.ISRELEVANT === '1'">是</text>
<text v-else-if="data.info.ISRELEVANT === '2'">否</text>
</template>
</u-cell>
<u-cell title="隐患照片">
<template #label>
<view class="mt-10 flex-start">
<view v-for="(item, index) in data.hImgs" :key="index" class="ml-10">
<u-image
show-loading
width="100rpx"
height="100rpx"
:src="item.FILEPATH"
@click="fnPreviewImage(item.FILEPATH, data.hImgs)"
/>
</view>
</view>
</template>
</u-cell>
<block v-if="data.hiddenVideo.length > 0">
<u-cell title="隐患视频">
<template #value>
<u-icon
name="play-circle-fill"
size="24"
@click="fnPreviewVideo(data.hiddenVideo[0].FILEPATH)"
/>
</template>
</u-cell>
</block>
<view v-for="(item, index) in data.hiddenExamineList" :key="index">
<block v-if="item.TYPE === 4">
<u-divider text-position="left" text="隐患确认"></u-divider>
<u-cell title="隐患级别" :value="item.editLevelName" />
<u-cell title="整改负责人部门" :value="item.editDeptName" />
<u-cell title="整改负责人" :value="item.editUserName" />
<u-cell title="整改完成期限" :value="item.spare3" />
<u-cell title="隐患确认人" :value="data.info.conUserName" />
<u-cell title="隐患确认时间" :value="data.info.CONFIRM_TIME" />
</block>
<block v-if="item.TYPE === 2">
<u-divider text-position="left" text="延期信息"></u-divider>
<u-cell title="申请延期日期" :value="item.CREATTIME" />
<u-cell title="延期日期" :value="fnFormatTime(item.DELAY_TIME)" />
<u-cell title="审核人" :value="data.info.conUserName" />
<u-cell title="处置方案" :value="item.DISPOSAL_PLAN" />
<block v-if="item.DISPOSAL_FILE">
<u-cell title="处置方案附件">
<template #value>
<u-button
type="primary"
size="mini"
shape="circle"
:custom-style="{ width: 'auto' }"
@click="fnPreviewFile(item.DISPOSAL_FILE)"
>
下载
</u-button>
</template>
</u-cell>
</block>
<u-cell title="延期审核状态">
<template #value>
<text v-if="item.STATE === -1">待审核</text>
<text v-if="item.STATE === 1">通过</text>
<text v-if="item.STATE === 2">未通过</text>
</template>
</u-cell>
<block v-if="item.STATE !== -1">
<u-cell title="审核时间" :value="item.OPERATTIME" />
</block>
</block>
<block v-if="item.TYPE === 1">
<u-divider text-position="left" text="特殊处理审核信息"></u-divider>
<u-cell title="无法整改原因" :label="item.EXAMINE" />
<u-cell title="特殊处置审核状态">
<template #value>
<text v-if="item.STATE === -1">待审核</text>
<text v-if="item.STATE === 1">通过</text>
<text v-if="item.STATE === 2">不通过</text>
</template>
</u-cell>
<block v-if="item.STATE === 1">
<u-cell title="处置方案" :value="item.DISPOSAL_PLAN" />
<block v-if="item.DISPOSAL_FILE">
<u-cell title="处置方案附件">
<template #value>
<up-button
type="primary"
size="mini"
shape="circle"
:custom-style="{ width: 'auto' }"
@click="fnPreviewFile(item.DISPOSAL_FILE)"
>
下载
</up-button>
</template>
</u-cell>
</block>
</block>
<block v-if="item.STATE !== -1">
<u-cell title="审核时间" :value="item.OPERATTIME" />
<u-cell title="审核人" :value="data.info.conUserName" />
</block>
<block v-if="item.STATE === 2">
<u-cell
title="是否更换整改负责人"
:value="item.spare1 === '1' ? '是' : '否'"
/>
<block v-if="item.spare1 === '1'">
<u-cell title="整改负责人" :value="item.editUserName" />
</block>
</block>
</block>
</view>
<block
v-if="
data.info.STATE === '2' ||
data.info.STATE === '4' ||
data.info.STATE === '10'
"
>
<u-divider text-position="left" text="整改信息"></u-divider>
<u-cell title="整改描述" :label="data.info.RECTIFYDESCR" />
<u-cell title="整改部门" :value="data.info.RECTIFICATIONDEPTNAME" />
<u-cell title="整改人" :value="data.info.RECTIFICATIONORNAME" />
<u-cell title="整改时间" :value="data.info.RECTIFICATIONTIME" />
<u-cell title="投入资金" :value="data.info.INVESTMENT_FUNDS + '元'" />
<u-cell title="整改后图片">
<template #label>
<view class="mt-10 flex-start">
<view
v-for="(item, index) in data.rImgs"
:key="index"
class="ml-10"
>
<u-image
show-loading
width="100rpx"
height="100rpx"
:src="item.FILEPATH"
@click="fnPreviewImage(item.FILEPATH, data.rImgs)"
/>
</view>
</view>
</template>
</u-cell>
<u-cell title="整改方案">
<template #value>
<text v-if="data.info.HAVESCHEME === '0'">无</text>
<text v-else-if="data.info.HAVESCHEME === '1'">有</text>
</template>
</u-cell>
<block v-if="data.info.HAVESCHEME === '1'">
<u-cell
title="排查日期"
:value="data.rectificationPlanInfo.SCREENINGDATE"
/>
<block v-if="data.rectificationPlanInfo.LISTNAME">
<u-cell
title="隐患清单"
:value="data.rectificationPlanInfo.LISTNAME"
/>
</block>
<u-cell
title="治理标准要求"
:value="data.rectificationPlanInfo.GOVERNSTANDARDS"
/>
<u-cell
title="治理方法"
:value="data.rectificationPlanInfo.GOVERNMETHOD"
/>
<u-cell
title="经费和物资的落实"
:value="data.rectificationPlanInfo.EXPENDITURE"
/>
<u-cell
title="负责治理人员"
:value="data.rectificationPlanInfo.PRINCIPAL"
/>
<u-cell
title="工时安排"
:value="data.rectificationPlanInfo.PROGRAMMING"
/>
<u-cell
title="时限要求"
:value="data.rectificationPlanInfo.TIMELIMITFOR"
/>
<u-cell
title="工作要求"
:value="data.rectificationPlanInfo.JOBREQUIREMENT"
/>
<u-cell
title="其他事项"
:value="data.rectificationPlanInfo.OTHERBUSINESS"
/>
<u-cell title="方案图片">
<template #label>
<view class="mt-10 flex-start">
<view
v-for="(item, index) in data.sImgs"
:key="index"
class="ml-10"
>
<u-image
show-loading
width="100rpx"
height="100rpx"
:src="item.FILEPATH"
@click="fnPreviewImage(item.FILEPATH, data.sImgs)"
/>
</view>
</view>
</template>
</u-cell>
</block>
</block>
<block v-if="data.info.STATE === '4'">
<u-divider text-position="left" text="验收信息"></u-divider>
<block v-if="data.info.RECTIFICATIONTYPE === '1'">
<u-cell title="验收人" :value="data.info.CHECKORNAME" />
</block>
<block v-else>
<view v-for="(item, index) in data.checkList" :key="index">
<u-cell title="验收描述" :label="item.CHECKDESCR" />
<u-cell title="是否合格" :value="item.STATUS === 1 ? '是' : '否'" />
<u-cell title="验收部门" :value="item.CHECKDEPTNAME" />
<u-cell title="验收人" :value="item.CHECKORNAME" />
<u-cell title="验收时间" :value="item.CHECK_TIME" />
<u-cell title="验收图片">
<template #label>
<view class="mt-10 flex-start">
<view
v-for="(item1, index1) in item.cImgs"
:key="index1"
class="ml-10"
>
<u-image
show-loading
width="100rpx"
height="100rpx"
:src="item1.FILEPATH"
@click="fnPreviewImage(item1.FILEPATH, item.cImgs)"
/>
</view>
</view>
</template>
</u-cell>
</view>
</block>
</block>
<u-modal
:show="data.videoDialog.visible"
title="视频预览"
:show-confirm-button="false"
show-cancel-button
cancel-text=""
@cancel="fnCloseVideoDialog"
>
<video
v-if="data.videoDialog.src"
:src="data.videoDialog.src"
style="width: 100%; height: 200px; margin: 10px"
autoplay
/>
</u-modal>
</u-cell-group>
</template>
<script>
import { getHiddenInfo } from "@/api";
import { HIDDEN_LEVEL_COlOR, HIDDEN_SOURCE } from "@/utils/constant";
import dayjs from "dayjs";
import { goEditData as resData } from "@/Mock/responseData.js";
export default {
props: {
hiddenId: {
type: String,
reequired: true,
},
},
data() {
return {
data: {
info: {},
hiddenFindPeople: [],
hImgs: [],
hiddenVideo: [],
rImgs: [],
sImgs: [],
hiddenExamineList: [],
checkList: [],
videoDialog: {
visible: false,
src: "",
},
specialDisposalReviewInfo: {},
rectificationPlanInfo: {},
},
};
},
mounted() {
this.fnGetData();
},
computed: {
hiddenLevelColor() {
return HIDDEN_LEVEL_COlOR;
},
hiddenSource() {
return HIDDEN_SOURCE;
},
selfStore() {
return this.$store;
},
},
methods: {
/** 预览图片处理 */
fnPreviewImage(src, srcArr) {
let urls = srcArr.map((sos) => sos.FILEPATH);
uni.previewImage({
urls,
current: src,
});
},
/** 预览视频处理 */
fnPreviewVideo(src) {
this.data.videoDialog.visible = true;
this.data.videoDialog.src = src;
},
/** 预览文件处理 */
fnPreviewFile(src) {
let { filePath } = this.selfStore.state;
uni.downloadFile({
url: filePath + src,
success: (res) => {
const filePath = res.tempFilePath;
uni.openDocument({
filePath,
});
},
});
},
/** 关闭视频弹窗 */
fnCloseVideoDialog() {
this.data.videoDialog.visible = false;
this.data.videoDialog.src = "";
},
/** 时间格式化 */
fnFormatTime(val) {
return dayjs(val).format("YYYY-MM-DD");
},
// 异步获取隐患信息
async fnGetData() {
let { filePath } = this.selfStore.state;
// const responseData = await getHiddenInfo({
// HIDDEN_ID: this.hiddenId
// })
// console.log('responseData :>> ', responseData);
for (let i = 0; i < resData.hImgs.length; i++) {
resData.hImgs[i].FILEPATH = filePath + resData.hImgs[i].FILEPATH;
}
for (let i = 0; i < resData.rImgs.length; i++) {
resData.rImgs[i].FILEPATH = filePath + resData.rImgs[i].FILEPATH;
}
for (let i = 0; i < resData.sImgs.length; i++) {
resData.sImgs[i].FILEPATH = filePath + resData.sImgs[i].FILEPATH;
}
for (let i = 0; i < resData.hiddenVideo.length; i++) {
resData.hiddenVideo[i].FILEPATH =
filePath + resData.hiddenVideo[i].FILEPATH;
}
for (let i = 0; i < resData.checkList.length; i++) {
for (let j = 0; j < resData.checkList[i].cImgs.length; j++) {
resData.checkList[i].cImgs[j].FILEPATH =
filePath + resData.checkList[i].cImgs[j].FILEPATH;
}
}
this.data.info = resData.pd;
this.data.rectificationPlanInfo = resData.hs;
this.data.hiddenFindPeople = resData.hiddenFindPeople;
this.data.hImgs = resData.hImgs;
this.data.rImgs = resData.rImgs;
this.data.sImgs = resData.sImgs;
this.data.checkList = resData.checkList;
this.data.hiddenVideo = resData.hiddenVideo;
this.data.hiddenExamineList = resData.hiddenExa;
this.$emit("throw-basic-info", resData);
},
},
};
</script>
<style lang="scss" scoped>
/deep/ .u-cell__body {
padding: 26rpx 30rpx;
}
</style>