qa-prevention-xgf-app/safetyEnvirSubPackages/pages/inspector-confirms/detail.vue

415 lines
16 KiB
Vue
Raw Permalink Normal View History

<template>
<view class="content">
<view class="card">
<u-cell-group :border="false">
<u-cell>
<view slot="title" class="title required">检查题目</view>
<view slot="value">
<u-radio-group v-model="form.INSPECTION_SUBJECT" placement="row" disabled>
<u-radio label="安全" name="安全"></u-radio>
<u-radio label="环保" name="环保" class="ml-10"></u-radio>
<u-radio label="综合" name="综合" class="ml-10"></u-radio>
</u-radio-group>
</view>
</u-cell>
<u-cell>
<view slot="title" class="title required">被检查单位</view>
<view slot="value">
<text>{{ form.INSPECTED_DEPARTMENT_NAMES }}</text>
</view>
</u-cell>
<u-cell>
<view slot="title" class="title required">被检查单位现场负责人</view>
<view slot="value">
<text>{{ form.INSPECTED_SITEUSER_NAME }}</text>
</view>
</u-cell>
<u-cell>
<view slot="title" class="title required">检查场所</view>
<view slot="value">
<u--input v-model="form.INSPECTION_PLACE" border="none" placeholder="请输入检查场所" inputAlign="right"
disabled></u--input>
</view>
</u-cell>
<u-cell>
<view slot="title" class="title required">检查类型</view>
<view slot="value">
<text>{{ form.INSPECTION_TYPE_NAME }}</text>
</view>
</u-cell>
<u-cell>
<view slot="title" class="title required">检查开始时间</view>
<view slot="value">
<text>{{ form.INSPECTION_TIME_START }}</text>
</view>
</u-cell>
<u-cell>
<view slot="title" class="title required">检查结束时间</view>
<view slot="value">
<text>{{ form.INSPECTION_TIME_END }}</text>
</view>
</u-cell>
<u-cell>
<view slot="title" class="title required">记录填写时间</view>
<view slot="value">
<text>{{ form.CREATTIME }}</text>
</view>
</u-cell>
<u-cell>
<view slot="title" class="title">检查情况</view>
</u-cell>
<u-cell class="flex-none">
<view slot="value">
<view class="pr mt-10" v-for="(item) in form.situationList" :key="item.id">
<u--textarea v-model="item.SITUATION" placeholder="请输入检查情况" disabled></u--textarea>
</view>
</view>
</u-cell>
<u-cell>
<view slot="title" class="title">检查人员</view>
</u-cell>
<u-cell class="title-none">
<view slot="value" style="flex: 1">
<view class="pr mt-10" v-for="(item, index) in form.inspectorList" :key="item.id">
<u-cell-group :border="false" class="border">
<u-cell class="title-show">
<view slot="title">{{ index + 1 }}.检查人员单位</view>
<view slot="value">
<text>{{ item.INSPECTION_DEPARTMENT_NAME }}</text>
</view>
</u-cell>
<u-cell class="title-show" :border="false">
<view slot="title">{{ index + 1 }}.检查人员</view>
<view slot="value">
<text>{{ item.INSPECTION_USER_NAME }}</text>
</view>
</u-cell>
</u-cell-group>
</view>
</view>
</u-cell>
<u-cell>
<view slot="title" class="title">发现问题</view>
</u-cell>
<u-cell class="title-none">
<view slot="value" style="flex: 1">
<uni-table border stripe emptyText="暂无更多数据">
<uni-tr>
<uni-th align="center">序号</uni-th>
<uni-th align="center">隐患部位</uni-th>
<uni-th align="center">隐患描述</uni-th>
<uni-th align="center">操作</uni-th>
</uni-tr>
<uni-tr v-for="(item, index) in form.hiddenList" :key="item.HIDDEN_ID || item.id">
<uni-td>{{ index + 1 }}</uni-td>
<uni-td>{{ item.HIDDENPART_NAME ? item.HIDDENPART_NAME : item.HIDDENPART }}</uni-td>
<uni-td>{{ item.HIDDENDESCR }}</uni-td>
<uni-td>
<view class="flex-between">
<u-icon name="eye-fill" @tap="showHidden(item, index)"></u-icon>
</view>
</uni-td>
</uni-tr>
</uni-table>
</view>
</u-cell>
<template v-if="type === 'verify'">
<u-cell class="flex-none">
<view slot="title" class="title">检查人意见</view>
<view slot="value" class="mt-10">
<u--textarea v-model="form.INSPECTION_USER_OPINION" placeholder="请输入检查人意见"></u--textarea>
</view>
</u-cell>
<u-cell class="flex-none">
<view slot="title" class="title flex-between">
签字
<u-button type="primary" text="手写添加" size="mini" class="bth-mini" @click="signShow = true"></u-button>
</view>
<view slot="value" class="mt-10">
<u--image v-show="form.INSPECTION_USER_SIGN_IMG" :showLoading="true" :src="form.INSPECTION_USER_SIGN_IMG"
width="100%" height="80px" mode="scaleToFill"
@click="previewImage(form.INSPECTION_USER_SIGN_IMG)"></u--image>
<sign v-if="signShow" :signShow.sync="signShow" @confirm="signConfirm"></sign>
</view>
</u-cell>
<u-cell class="flex-none" :border="false">
<view slot="value" class="flex-between">
<u-button type="primary" class="bth" text="通过" @click="$u.debounce(fnSubmit(1), 1000, true)"></u-button>
<u-button type="error" class="bth ml-10" text="不通过"
@click="$u.debounce(fnSubmit(-1), 1000, true)"></u-button>
</view>
</u-cell>
</template>
<view v-for="(item, index) in esipList" :key="index">
<template v-if="item.INSPECTION_USER_SIGN_IMG">
<u-cell class="flex-none">
<view slot="title" class="title">检查人意见</view>
<view slot="value" class="mt-10">
<text>{{ item.INSPECTION_USER_OPINION }}</text>
</view>
</u-cell>
<u-cell class="flex-none">
<view slot="title" class="title">签字</view>
<view slot="value" class="mt-10">
<u--image :showLoading="true" mode="scaleToFill"
:src="$store.state.filePath + item.INSPECTION_USER_SIGN_IMG" width="100%" height="80px"
@click="previewImage($store.state.filePath + item.INSPECTION_USER_SIGN_IMG)"></u--image>
</view>
</u-cell>
<u-cell>
<view slot="title" class="title">审核状态</view>
<view slot="value"><text>同意</text></view>
</u-cell>
</template>
</view>
</u-cell-group>
</view>
<u-popup :show="popupShow" @close="popupShow = false" mode="right" :closeOnClickOverlay="false"
:customStyle="{ width: '85vw', overflowY: 'auto' }">
<view class="card">
<u-cell-group :border="false">
<u-cell class="flex-none">
<view slot="title" class="title required">隐患照片</view>
<view slot="value" class="mt-10">
<u-upload disabled deletable uploadIcon="plus" :fileList="hiddenForm.hiddenImgs" multiple
:maxCount="4"></u-upload>
</view>
</u-cell>
<u-cell class="flex-none">
<view slot="title" class="title flex-between">
隐患视频
<u-icon v-if="hiddenForm.hiddenVideos.length !== 0 && hiddenForm.hiddenVideos[0].url"
name="play-circle-fill" size="30" @click="previewVideo(hiddenForm.hiddenVideos[0].url)"></u-icon>
</view>
<view slot="value" class="mt-10">
<u-upload disabled deletable accept="video" uploadIcon="plus" :fileList="hiddenForm.hiddenVideos" multiple
:maxCount="1"></u-upload>
<u-modal :show="modalShow" title="视频播放" confirmText="关闭" @confirm="modalShow = false">
<view>
<video v-if="modalShow" :src="videoUrl" :autoplay="true"></video>
</view>
</u-modal>
</view>
</u-cell>
<u-cell class="flex-none">
<view slot="title" class="title required">隐患描述</view>
<view slot="value" class="mt-10">
<u--textarea v-model="hiddenForm.HIDDENDESCR" placeholder="请输入隐患描述" disabled></u--textarea>
</view>
</u-cell>
<u-cell>
<view slot="title" class="title required">隐患部位</view>
<view slot="value">
<text>{{ hiddenForm.HIDDENPART_NAME ? hiddenForm.HIDDENPART_NAME : hiddenForm.HIDDENPART }}</text>
</view>
</u-cell>
<u-cell>
<view slot="title" class="title required">隐患级别</view>
<view slot="value">
<text>{{ hiddenForm.HIDDENLEVEL_NAME }}</text>
</view>
</u-cell>
<u-cell>
<view slot="title" class="title required">是否是相关方</view>
<view slot="value">
<u-radio-group v-model="hiddenForm.ISRELEVANT" placement="row" disabled="false">
<u-radio label="是" name="1" class="ml-10"></u-radio>
<u-radio label="否" name="2" class="ml-10"></u-radio>
</u-radio-group>
</view>
</u-cell>
<u-cell>
<view slot="title" class="title required">隐患类型</view>
<view slot="value">
<text>{{ hiddenForm.HIDDENTYPE_NAME }}</text>
</view>
</u-cell>
<u-cell>
<view slot="title" class="title required">隐患发现时间</view>
<view slot="value">
<text>{{ hiddenForm.DISCOVERYTIME }}</text>
</view>
</u-cell>
<u-cell class="flex-none">
<view slot="title" class="title required">隐患上报位置</view>
<view slot="value" class="mt-10">
<view>经度:{{ hiddenForm.LONGITUDE }}</view>
<view>纬度:{{ hiddenForm.LATITUDE }}</view>
</view>
</u-cell>
<u-cell class="flex-none">
<view slot="title" class="title required">隐患位置描述</view>
<view slot="value" class="mt-10">
<u--textarea v-model="hiddenForm.POSITIONDESC" placeholder="请输入隐患位置描述" disabled></u--textarea>
</view>
</u-cell>
<u-cell>
<view slot="title" class="title required">隐患发现人</view>
<view slot="value">
<text>{{ hiddenForm.CREATOR_NAME }}</text>
</view>
</u-cell>
<u-cell class="flex-none" :border="false">
<view slot="value" class="flex-between">
<u-button type="info" text="取消" class="bth" @click="popupClose"></u-button>
</view>
</u-cell>
</u-cell-group>
</view>
</u-popup>
</view>
</template>
<script>
import { getSafetyenvironmentalGoEdit, setSafetyenvironmentalVerify } from "../../api";
import sign from "../../../components/sign/sign";
export default {
components: {
sign,
},
data() {
return {
form: {
INSPECTION_SUBJECT: '',
INSPECTED_DEPARTMENT_NAME: '',
INSPECTED_DEPARTMENT_ID: '',
INSPECTED_SITEUSER_NAME: '',
INSPECTED_SITEUSER_ID: '',
INSPECTION_PLACE: '',
INSPECTION_TYPE_NAME: '',
INSPECTION_TIME_START: uni.$u.timeFormat(new Date(), 'yyyy-mm-dd hh:MM'),
INSPECTION_TIME_END: uni.$u.timeFormat(new Date(), 'yyyy-mm-dd hh:MM'),
CREATTIME: '',
situationList: [{ id: Math.random(), INSPECTION_SITUATION_ID: '', SITUATION: '' }],
inspectorList: [{
id: Math.random(),
inspectionUserShow: false,
INSPECTION_INSPECTOR_ID: '',
INSPECTION_DEPARTMENT_ID: '',
INSPECTION_DEPARTMENT_NAME: '',
INSPECTION_USER_ID: '',
INSPECTION_USER_NAME: ''
}],
hiddenList: [],
INSPECTION_USER_OPINION: '',
INSPECTION_USER_SIGN_IMG: ''
},
rules: {
'INSPECTION_USER_OPINION': { required: true, message: '请输入检查人意见' },
'INSPECTION_USER_SIGN_IMG': { required: true, message: '请签字' },
},
INSPECTION_ID: '',
type: '',
INSPECTION_USER_ID: '',
INSPECTION_INSPECTOR_ID: '',
popupShow: false,
hiddenForm: {
hiddenImgs: [],
hiddenVideos: [],
HIDDENDESCR: '',
HIDDENPART_NAME: '',
HIDDENPART: '',
HIDDENLEVEL_NAME: '',
HIDDENLEVEL: '',
HIDDENTYPE_NAME: '',
HIDDENTYPE: '',
DISCOVERYTIME: uni.$u.timeFormat(new Date(), 'yyyy-mm-dd hh:MM'),
LONGITUDE: '',
LATITUDE: '',
CREATOR_NAME: '',
CREATOR: '',
},
signShow: false,
modalShow: false,
videoUrl: '',
esipList: [] //审核过成意见
}
},
onLoad(event) {
this.INSPECTION_ID = event.INSPECTION_ID
this.type = event.type
this.INSPECTION_INSPECTOR_ID = event.INSPECTION_INSPECTOR_ID
this.INSPECTION_USER_ID = event.INSPECTION_USER_ID
if (this.INSPECTION_ID) {
this.fnGetSafetyenvironmentalGoEdit()
}
},
computed: {
userInfo() {
return this.$store.getters.getUserInfo
}
},
methods: {
async fnGetSafetyenvironmentalGoEdit() {
let resData = await getSafetyenvironmentalGoEdit({ INSPECTION_ID: this.INSPECTION_ID })
for (let i = 0; i < resData.pd.hiddenList.length; i++) {
for (let j = 0; j < resData.pd.hiddenList[i].hiddenImgs.length; j++) {
resData.pd.hiddenList[i].hiddenImgs[j].url = this.$store.state.filePath + resData.pd.hiddenList[i].hiddenImgs[j].FILEPATH
}
for (let j = 0; j < resData.pd.hiddenList[i].hiddenVideos.length; j++) {
resData.pd.hiddenList[i].hiddenVideos[j].url = this.$store.state.filePath + resData.pd.hiddenList[i].hiddenVideos[j].FILEPATH
}
}
this.form = resData.pd
this.esipList = resData.esipList
},
async fnSubmit(INSPECTION_STATUS) {
for (const key in this.rules) {
if (!this.form[key]) {
uni.showToast({
title: this.rules[key].message,
icon: "none"
})
return;
}
}
await setSafetyenvironmentalVerify({
filePath: this.form.INSPECTION_USER_SIGN_IMG,
name: 'FFILE',
formData: {
INSPECTION_STATUS,
INSPECTION_ID: this.INSPECTION_ID,
INSPECTION_INSPECTOR_ID: this.INSPECTION_INSPECTOR_ID,
INSPECTION_USER_ID: this.INSPECTION_USER_ID,
INSPECTION_USER_OPINION: this.form.INSPECTION_USER_OPINION,
INSPECTION_USER_SIGN_TIME: uni.$u.timeFormat(new Date(), 'yyyy-mm-dd hh:MM'),
ACTION_USER_ID: this.userInfo.USER_ID,
ACTION_ID: this.userInfo.USER_ID,
},
})
uni.showToast({
title: '核查成功',
})
uni.$u.route({
type: 'navigateBack'
})
},
showHidden(item) {
this.hiddenForm = item
this.popupShow = true
},
popupClose() {
this.popupShow = false
},
signConfirm(signImg) {
this.form.INSPECTION_USER_SIGN_IMG = signImg.filePath
},
previewImage(current) {
if (false) {
uni.previewImage({
urls: [current],
current
});
}
},
previewVideo(videoUrl) {
this.modalShow = true;
this.videoUrl = videoUrl;
}
},
}
</script>
<style></style>