feat: 新增安全环保检查管理模块静态页面
parent
4c00524b91
commit
93205d5bb8
|
|
@ -11,7 +11,7 @@ module.exports = {
|
|||
assetsPublicPath: '/',
|
||||
proxyTable: {
|
||||
'/api': {
|
||||
target: 'http://192.168.0.112:8088/',
|
||||
target: 'http://192.168.0.112:8088',
|
||||
changeOrigin: true,
|
||||
pathRewrite: {
|
||||
'^/api': ''
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -5,7 +5,7 @@
|
|||
"author": "",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
|
||||
"dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js --open",
|
||||
"start": "npm run dev",
|
||||
"unit": "jest --config test/unit/jest.conf.js --coverage",
|
||||
"e2e": "node test/e2e/runner.js",
|
||||
|
|
@ -32,6 +32,7 @@
|
|||
"vue": "^2.5.2",
|
||||
"vue-baidu-map": "^0.21.22",
|
||||
"vue-count-to": "^1.0.13",
|
||||
"vue-esign": "^1.0.5",
|
||||
"vue-hot-reload-api": "^2.3.4",
|
||||
"vue-particles": "^1.0.9",
|
||||
"vue-pdf": "^4.3.0",
|
||||
|
|
|
|||
Binary file not shown.
|
After Width: | Height: | Size: 3.2 KiB |
|
|
@ -0,0 +1,96 @@
|
|||
<template>
|
||||
<div id="app" class="esign">
|
||||
<div class="esign-box">
|
||||
<vue-esign
|
||||
ref="esign"
|
||||
:width="600"
|
||||
:height="300"
|
||||
:is-crop="isCrop"
|
||||
:line-width="lineWidth"
|
||||
:line-color="lineColor"
|
||||
:bg-color.sync="bgColor"
|
||||
class="esignature"
|
||||
/>
|
||||
</div>
|
||||
<div class="esigh-btns">
|
||||
<button @click="handleReset">重签</button>
|
||||
<button @click="handleGenerate">完成</button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'WriteSign',
|
||||
data() {
|
||||
return {
|
||||
lineWidth: 6,
|
||||
lineColor: '#000000',
|
||||
bgColor: '',
|
||||
isCrop: false
|
||||
}
|
||||
},
|
||||
created() {
|
||||
// 在 dom 确认渲染完毕之后,调用签字对象进行签字逻辑处理
|
||||
this.$nextTick(() => {
|
||||
this.handleReset()
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
handleReset() {
|
||||
this.$refs.esign.reset()
|
||||
},
|
||||
handleGenerate() {
|
||||
this.$refs.esign
|
||||
.generate()
|
||||
.then((res) => {
|
||||
this.$emit('subCanvas', res)
|
||||
})
|
||||
.catch((err) => {
|
||||
alert(err)
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.esign {
|
||||
max-width: 1000px;
|
||||
margin: auto;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.esigh-btns button {
|
||||
color: #fff;
|
||||
height: 40px;
|
||||
width: 100px;
|
||||
font-size: 16px;
|
||||
margin-right: 10px;
|
||||
outline: none;
|
||||
border-radius: 4px;
|
||||
background: #f60;
|
||||
border: 1px solid transparent;
|
||||
}
|
||||
|
||||
.esigh-btns button:active {
|
||||
color: #fff;
|
||||
box-shadow: 0px 0px 50px orangered inset;
|
||||
}
|
||||
|
||||
.esigh-result {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.esigh-result img {
|
||||
display: block;
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
border: 1px solid #ececee;
|
||||
}
|
||||
|
||||
.esignature {
|
||||
margin: 10px 0;
|
||||
border: 2px solid #ccc;
|
||||
}
|
||||
</style>
|
||||
10
src/main.js
10
src/main.js
|
|
@ -41,6 +41,11 @@ Viewer.setDefaults({
|
|||
}
|
||||
})
|
||||
|
||||
Vue.prototype.validStr = function(str) {
|
||||
if (str != null && str != '' && typeof (str) != 'undefined' && str != 'undefined' && str != 0) { return true }
|
||||
return false
|
||||
}
|
||||
|
||||
Vue.use(BaiduMap, {
|
||||
ak: 'OElqFYoKiAH8KFtph8ftLKF5NlNrbCUr'
|
||||
})
|
||||
|
|
@ -54,6 +59,11 @@ Vue.config.productionTip = false
|
|||
Vue.use(Element, {
|
||||
size: Cookies.get('size') || 'small' // set element-ui default size
|
||||
})
|
||||
|
||||
// vue手写签名
|
||||
import vueEsign from 'vue-esign'
|
||||
Vue.use(vueEsign)
|
||||
|
||||
/* eslint-disable no-new */
|
||||
new Vue({
|
||||
el: '#app',
|
||||
|
|
|
|||
|
|
@ -163,6 +163,28 @@ aside {
|
|||
padding: 20px;
|
||||
}
|
||||
|
||||
.app-statistical {
|
||||
padding: 8px 20px 8px 20px;
|
||||
border: 1px solid #abdcff;
|
||||
background-color: #f0faff;
|
||||
position: relative;
|
||||
border-radius: 4px;
|
||||
color: #515a6e;
|
||||
line-height: 16px;
|
||||
margin-bottom: 15px;
|
||||
|
||||
span {
|
||||
margin-right: 20px;
|
||||
font-size: 12px;
|
||||
|
||||
i {
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
color: rgb(45, 140, 240);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.app-contprint {
|
||||
padding: 20px;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,103 @@
|
|||
<template>
|
||||
<el-dialog :visible.sync="dialogVisible" :width="width" title="隐患视频" append-to-body>
|
||||
<div v-if="vector === 'video'">
|
||||
<video-player
|
||||
v-if="dialogVisible"
|
||||
ref="videoPlayer"
|
||||
:playsinline="true"
|
||||
:options="playerOptions"
|
||||
style="width: 100%;"
|
||||
class="video-player vjs-custom-skin"/>
|
||||
</div>
|
||||
<div v-if="vector === 'pdf'">
|
||||
<iframe :src="pdfUrl" width="500px" height="500px" frameborder="1"/>
|
||||
</div>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="dialogVisible = false">关 闭</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Pagination from '@/components/Pagination' // 通过 el-pagination二次打包
|
||||
import 'video.js/dist/video-js.css'
|
||||
import { videoPlayer } from 'vue-video-player'
|
||||
|
||||
export default {
|
||||
components: { Pagination, videoPlayer },
|
||||
props: {
|
||||
type: {
|
||||
type: String,
|
||||
default: ''
|
||||
}},
|
||||
data() {
|
||||
return {
|
||||
dialogVisible: false,
|
||||
config: config,
|
||||
width: 'auto',
|
||||
playerOptions: {
|
||||
playbackRates: [0.5, 1.0, 1.5, 2.0], // 可选的播放速度
|
||||
autoplay: false, // 如果为true,浏览器准备好时开始回放。
|
||||
muted: false, // 默认情况下将会消除任何音频。
|
||||
loop: false, // 是否视频一结束就重新开始。
|
||||
preload: 'auto', // 建议浏览器在<video>加载元素后是否应该开始下载视频数据。auto浏览器选择最佳行为,立即开始加载视频(如果浏览器支持)
|
||||
language: 'zh-CN',
|
||||
aspectRatio: '16:9', // 将播放器置于流畅模式,并在计算播放器的动态大小时使用该值。值应该代表一个比例 - 用冒号分隔的两个数字(例如"16:9"或"4:3")
|
||||
fluid: true, // 当true时,Video.js player将拥有流体大小。换句话说,它将按比例缩放以适应其容器。
|
||||
sources: [{
|
||||
type: 'video/mp4', // 类型
|
||||
src: '' // url地址
|
||||
}],
|
||||
poster: '', // 封面地址
|
||||
notSupportedMessage: '此视频暂无法播放,请稍后再试', // 允许覆盖Video.js无法播放媒体源时显示的默认信息。
|
||||
controlBar: {
|
||||
timeDivider: true, // 当前时间和持续时间的分隔符
|
||||
durationDisplay: true, // 显示持续时间
|
||||
remainingTimeDisplay: false, // 是否显示剩余时间功能
|
||||
fullscreenToggle: true // 是否显示全屏按钮
|
||||
}
|
||||
},
|
||||
pdfUrl: '',
|
||||
vector: ''
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
// type: function(newData) {
|
||||
// this.vector = newData
|
||||
// }
|
||||
},
|
||||
methods: {
|
||||
init(url, type) {
|
||||
this.dialogVisible = true
|
||||
if (type === 'video') {
|
||||
this.playerOptions.sources[0].src = config.fileUrl + url
|
||||
this.vector = 'video'
|
||||
this.width = '600px'
|
||||
} else {
|
||||
this.pdfUrl = this.config.fileUrl + url
|
||||
this.width = '600px'
|
||||
this.vector = 'pdf'
|
||||
}
|
||||
this.$forceUpdate()
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="sass" scoped>
|
||||
.table-ui
|
||||
.tbg
|
||||
width: 150px
|
||||
|
||||
.img-flex
|
||||
display: flex
|
||||
|
||||
.img-ui
|
||||
width: 240px
|
||||
height: 240px
|
||||
margin-right: 20px
|
||||
|
||||
& img
|
||||
width: 100%
|
||||
height: 100%
|
||||
</style>
|
||||
|
|
@ -0,0 +1,106 @@
|
|||
<template>
|
||||
<div>
|
||||
<el-dialog
|
||||
v-loading="Loading"
|
||||
v-if="SuperFlowData.dialogVisible"
|
||||
:visible.sync="SuperFlowData.dialogVisible"
|
||||
:title="'流程图'"
|
||||
width="80%">
|
||||
<div style="height:600px;">
|
||||
<SeeksRelationGraph ref="seeksRelationGraph" :options="SuperFlowData.graphOptions" />
|
||||
</div>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="SuperFlowData.dialogVisible = false">关 闭</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import SeeksRelationGraph from 'relation-graph'
|
||||
import { requestFN } from '@/utils/request'
|
||||
import Pagination from '@/components/Pagination' // 通过 el-pagination二次打包
|
||||
|
||||
export default {
|
||||
components: { Pagination, SeeksRelationGraph },
|
||||
data() {
|
||||
return {
|
||||
Loading: false,
|
||||
SuperFlowData: {
|
||||
dialogVisible: false,
|
||||
graphOptions: {
|
||||
debug: true,
|
||||
disableDragNode: true,
|
||||
layouts: [
|
||||
{
|
||||
label: '中心',
|
||||
layoutName: 'tree',
|
||||
layoutClassName: 'seeks-layout-center',
|
||||
defaultJunctionPoint: 'border',
|
||||
defaultNodeShape: 0,
|
||||
defaultLineShape: 1,
|
||||
from: 'left',
|
||||
min_per_width: '200',
|
||||
max_per_width: '500',
|
||||
min_per_height: '40',
|
||||
max_per_height: '60',
|
||||
levelDistance: ''
|
||||
}
|
||||
],
|
||||
defaultNodeShape: 1,
|
||||
defaultNodeWidth: '100',
|
||||
defaultLineShape: 4,
|
||||
defaultJunctionPoint: 'lr',
|
||||
defaultNodeBorderWidth: 0
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
init(row) {
|
||||
this.Loading = true
|
||||
console.log(row)
|
||||
this.SuperFlowData.dialogVisible = true
|
||||
this.getInformation(row)
|
||||
},
|
||||
getInformation(row) {
|
||||
requestFN(
|
||||
'/safetyenvironmental/getFlowChart',
|
||||
{
|
||||
HIDDEN_ID: row.HIDDEN_ID
|
||||
}
|
||||
).then((data) => {
|
||||
console.log(data.nodes, data.from)
|
||||
this.viewFlowChart(data.nodes, data.from)
|
||||
this.Loading = false
|
||||
}).catch((e) => {
|
||||
this.Loading = false
|
||||
})
|
||||
},
|
||||
viewFlowChart(nodes, from) {
|
||||
console.log(nodes)
|
||||
console.log(from)
|
||||
this.$nextTick(() => {
|
||||
const __graph_json_data = {
|
||||
nodes: nodes,
|
||||
links: from
|
||||
}
|
||||
this.$refs.seeksRelationGraph.setJsonData(__graph_json_data, (seeksRGGraph) => {
|
||||
// 这些写上当图谱初始化完成后需要执行的代码
|
||||
this.Loading = false
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="sass">
|
||||
.print-approval-img
|
||||
width: 2px
|
||||
height: 97px
|
||||
display: inline-block
|
||||
img
|
||||
width: 20px
|
||||
height: 20px
|
||||
</style>
|
||||
|
|
@ -0,0 +1,660 @@
|
|||
<template>
|
||||
<el-dialog v-if="dialogVisible" :visible.sync="dialogVisible" :append-to-body="appendToBody" :fullscreen="fullscreen" title="隐患详细信息" width="1000px">
|
||||
<el-scrollbar style="height: 100%;margin-top: 10px;" class="information">
|
||||
<div id="printTest" class="app-container">
|
||||
<div class="print-break">
|
||||
<div class="level-title">
|
||||
<h1>隐患信息</h1>
|
||||
</div>
|
||||
<div class="mb-20">
|
||||
<table class="table-ui">
|
||||
<tr>
|
||||
<td class="tbg">隐患发现人</td>
|
||||
<td>{{ pd.CREATORNAME }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">隐患来源</td>
|
||||
<template v-if="pd.SOURCE=='1'">
|
||||
<td>隐患快报</td>
|
||||
</template>
|
||||
<template v-else-if="pd.SOURCE=='2'">
|
||||
<td>隐患排查</td>
|
||||
</template>
|
||||
<template v-else-if="pd.SOURCE=='3'">
|
||||
<td>隐患排查</td>
|
||||
</template>
|
||||
<template v-else-if="pd.SOURCE=='4'">
|
||||
<td>安全环保检查(监管端)</td>
|
||||
</template>
|
||||
<template v-else-if="pd.SOURCE=='5'">
|
||||
<td>安全环保检查(企业端)</td>
|
||||
</template>
|
||||
<template v-else-if="pd.SOURCE=='6'">
|
||||
<td>消防检查</td>
|
||||
</template>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">隐患描述</td>
|
||||
<td>{{ pd.HIDDENDESCR }}</td>
|
||||
</tr>
|
||||
<tr v-if="pd.SOURCE=='2'">
|
||||
<td class="tbg">风险点(单元)</td>
|
||||
<td>{{ pd.RISK_UNIT }}</td>
|
||||
</tr>
|
||||
<tr v-if="pd.SOURCE=='2'">
|
||||
<td class="tbg">辨识部位</td>
|
||||
<td>{{ pd.IDENTIFICATION }}</td>
|
||||
</tr>
|
||||
<tr v-if="pd.SOURCE=='2'">
|
||||
<td class="tbg">存在风险</td>
|
||||
<td>{{ pd.RISK_DESCR }}</td>
|
||||
</tr>
|
||||
<tr v-if="pd.SOURCE=='2'">
|
||||
<td class="tbg">风险分级</td>
|
||||
<td>{{ pd.LEVEL }}</td>
|
||||
</tr>
|
||||
<tr v-if="pd.SOURCE=='2'">
|
||||
<td class="tbg">检查内容</td>
|
||||
<td>{{ pd.CHECK_CONTENT }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">隐患级别</td>
|
||||
<td>{{ pd.editLevelName ? pd.editLevelName : '' }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">隐患类型</td>
|
||||
<td>{{ pd.HIDDENTYPENAME }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">隐患状态</td>
|
||||
<td>
|
||||
{{ transformation(pd.STATE) }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">隐患部位</td>
|
||||
<td>{{ pd.hregionName ? pd.hregionName : pd.HIDDENPART }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">隐患上报位置</td>
|
||||
<td>经度:{{ pd.LONGITUDE }} , 纬度:{{ pd.LATITUDE }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">隐患位置描述</td>
|
||||
<td>{{ pd.POSITIONDESC }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">隐患图片</td>
|
||||
<td class="img-select">
|
||||
<viewer :images="hImgs">
|
||||
<img v-for="item in hImgs" :src="config.fileUrl + item.FILEPATH" :key="item.IMGFILES_ID" width="100" height="100">
|
||||
</viewer>
|
||||
</td>
|
||||
</tr>
|
||||
<tr v-for="item in hiddenFindPeople" :key="item.USER_ID">
|
||||
<td class="tbg">隐患发现人</td>
|
||||
<td>{{ item.NAME }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">隐患发现时间</td>
|
||||
<td>{{ formatDate(pd.DISCOVERYTIME, 'YYYY-MM-DD HH:mm:ss') }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">整改类型</td>
|
||||
<td>
|
||||
<template>
|
||||
限期整改
|
||||
</template>
|
||||
</td>
|
||||
</tr>
|
||||
<tr v-if="pd.editDeptName ?pd.editDeptName :pd.RECTIFICATIONDEPTNAME">
|
||||
<td class="tbg">整改负责部门</td>
|
||||
<td>{{ pd.editDeptName ? pd.editDeptName : pd.RECTIFICATIONDEPTNAME }}</td>
|
||||
</tr>
|
||||
<tr v-if="pd.editUserName ?pd.editUserName :pd.RECTIFICATIONORNAME">
|
||||
<td class="tbg">整改负责人</td>
|
||||
<td>{{ pd.editUserName ? pd.editUserName : pd.RECTIFICATIONORNAME }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">是否相关方</td>
|
||||
<td>{{ pd.ISRELEVANT == '1' ? '是' : '否' }}</td>
|
||||
</tr>
|
||||
<tr v-if="videoUrl">
|
||||
<td class="tbg">隐患视频</td>
|
||||
<td>
|
||||
<span style="color: #4395ff;cursor: pointer" @click="openUtil('video')">隐患视频</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr v-if="pd.RECTIFICATIONTYPE=='2' && pd.RECTIFICATIONDEADLINE">
|
||||
<td class="tbg">整改期限</td>
|
||||
<td>{{ pd.RECTIFICATIONDEADLINE }}</td>
|
||||
</tr>
|
||||
<template v-if="repulsecause">
|
||||
<tr v-for="item in repulsecause" :key="item.USER_ID">
|
||||
<td class="tbg">打回原因</td>
|
||||
<td>{{ item.REPULSE_CAUSE }}</td>
|
||||
</tr>
|
||||
</template>
|
||||
<template v-if="repulsecause">
|
||||
<tr v-for="item in repulsecause" :key="item.USER_ID">
|
||||
<td class="tbg">打回时间</td>
|
||||
<td>{{ item.OPERATTIME }}</td>
|
||||
</tr>
|
||||
</template>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div v-for="(item,index) in hiddenExamineList" :key="index">
|
||||
<div v-if="item.TYPE === 4 || item.TYPE === 2 || item.TYPE === 1" class="print-break">
|
||||
<div class="level-line"/>
|
||||
<table v-if="item.TYPE === 4" class="table-ui">
|
||||
<div class="level-title">
|
||||
<h1>确认信息</h1>
|
||||
</div>
|
||||
<tr>
|
||||
<td class="tbg">隐患级别</td>
|
||||
<td>{{ item.editLevelName }}</td>
|
||||
</tr>
|
||||
<tr v-if="item.editUserName">
|
||||
<td class="tbg">整改负责人</td>
|
||||
<td>{{ item.editUserName }}</td>
|
||||
</tr>
|
||||
<tr v-if="item.spare3">
|
||||
<td class="tbg">整改完成期限</td>
|
||||
<td>{{ item.spare3 }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">隐患确认人</td>
|
||||
<td>{{ pd.conUserName }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">隐患确认时间</td>
|
||||
<td>{{ pd.CONFIRM_TIME }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table v-else-if="item.TYPE === 2" class="table-ui">
|
||||
<div class="level-title">
|
||||
<h1>延期信息</h1>
|
||||
</div>
|
||||
<tr>
|
||||
<td class="tbg">申请延期日期</td>
|
||||
<td>{{ item.DELAY_TIME }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">审核人</td>
|
||||
<td>{{ pd.conUserName }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">处置方案</td>
|
||||
<td>{{ item.DISPOSAL_PLAN }}</td>
|
||||
</tr>
|
||||
<tr v-if="item.DISPOSAL_FILE">
|
||||
<td class="tbg">方案附件</td>
|
||||
<td><a style="color: #1e9fff" @click="openUtil('pdf',item.DISPOSAL_FILE)">[预览]</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">延期审核状态</td>
|
||||
<template v-if="item.STATE===-1">
|
||||
<td>待审核</td>
|
||||
</template>
|
||||
<template v-else-if="item.STATE===1">
|
||||
<td>通过</td>
|
||||
</template>
|
||||
<template v-else-if="item.STATE===2">
|
||||
<td>未通过</td>
|
||||
</template>
|
||||
</tr>
|
||||
<tr v-if="item.STATE===1">
|
||||
<td class="tbg">审核时间</td>
|
||||
<td>{{ item.OPERATTIME }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table v-else-if="item.TYPE === 1" class="table-ui">
|
||||
<div class="level-title">
|
||||
<h1>特殊处理审核信息</h1>
|
||||
</div>
|
||||
<tr>
|
||||
<td class="tbg">无法整改原因</td>
|
||||
<td>{{ item.EXAMINE }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">特殊处置审核状态</td>
|
||||
<template v-if="item.STATE===-1">
|
||||
<td>待审核</td>
|
||||
</template>
|
||||
<template v-else-if="item.STATE===2">
|
||||
<td>通过</td>
|
||||
</template>
|
||||
<template v-else-if="item.STATE===1">
|
||||
<td>未通过</td>
|
||||
</template>
|
||||
</tr>
|
||||
<tr v-if="item.STATE===2">
|
||||
<td class="tbg">处置方案</td>
|
||||
<td>{{ item.DISPOSAL_PLAN }}</td>
|
||||
</tr>
|
||||
<tr v-if="item.STATE===2 && item.DISPOSAL_FILE">
|
||||
<td class="tbg">处置方案附件</td>
|
||||
<td><a style="color: #1e9fff" @click="openUtil('pdf',item.DISPOSAL_FILE)">[预览]</a></td>
|
||||
</tr>
|
||||
<tr v-if="item.STATE!==-1">
|
||||
<td class="tbg">审核时间</td>
|
||||
<td>{{ item.OPERATTIME }}</td>
|
||||
</tr>
|
||||
<tr v-if="item.STATE!==-1">
|
||||
<td class="tbg">审核人</td>
|
||||
<td>{{ pd.conUserName }}</td>
|
||||
</tr>
|
||||
<tr v-if="item.TYPE ==='2'">
|
||||
<td class="tbg">是否更换整改负责人</td>
|
||||
<td v-if="item.spare1==='1'">是</td>
|
||||
<td v-if="item.spare1==='0'">否</td>
|
||||
</tr>
|
||||
<tr v-if="item.STATE!==-1">
|
||||
<td class="tbg">是否更换整改负责人</td>
|
||||
<td v-if="item.spare2 == undefined">否</td>
|
||||
<td v-else>是</td>
|
||||
</tr>
|
||||
<tr v-if="item.spare1==='1'">
|
||||
<td class="tbg">整改负责人</td>
|
||||
<td>{{ item.NEWRECTIFICATIONOR }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="pd.STATE ==2 || pd.STATE ==4 || pd.STATE == 10" class="level-line"/>
|
||||
<div v-if="pd.STATE ==2 || pd.STATE ==4 || pd.STATE == 10" class="print-break">
|
||||
<div class="level-line"/>
|
||||
<div class="level-title">
|
||||
<h1>整改信息</h1>
|
||||
</div>
|
||||
<table class="table-ui">
|
||||
<tr>
|
||||
<td class="tbg">整改描述</td>
|
||||
<td>{{ pd.RECTIFYDESCR }}</td>
|
||||
</tr>
|
||||
|
||||
<tr v-if="pd.RECTIFICATIONDEPTNAME">
|
||||
<td class="tbg">整改部门</td>
|
||||
<td>{{ pd.RECTIFICATIONDEPTNAME }}</td>
|
||||
</tr>
|
||||
<tr v-if="pd.RECTIFICATIONORNAME">
|
||||
<td class="tbg">整改人</td>
|
||||
<td>{{ pd.RECTIFICATIONORNAME }}</td>
|
||||
</tr>
|
||||
<tr v-if="pd.RECTIFICATIONTIME">
|
||||
<td class="tbg">整改时间</td>
|
||||
<td>{{ pd.RECTIFICATIONTIME }}</td>
|
||||
</tr>
|
||||
<tr v-if="pd.INVESTMENT_FUNDS">
|
||||
<td class="tbg">投入资金</td>
|
||||
<td>{{ pd.INVESTMENT_FUNDS }}元</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">整改后图片</td>
|
||||
<td class="img-select">
|
||||
<viewer :images="rImgs">
|
||||
<img v-for="item in rImgs" :src="config.fileUrl + item.FILEPATH" :key="item.IMGFILES_ID" width="100" height="100">
|
||||
</viewer>
|
||||
</td>
|
||||
</tr>
|
||||
<tr v-if="pd.HAVESCHEME">
|
||||
<td class="tbg">整改方案</td>
|
||||
<td v-if="pd.HAVESCHEME==0">无</td>
|
||||
<td v-else-if="pd.HAVESCHEME==1">有</td>
|
||||
<td v-else/>
|
||||
</tr>
|
||||
<tr v-if="hs && pd.HAVESCHEME==1">
|
||||
<td class="tbg">排查日期</td>
|
||||
<td>{{ hs.SCREENINGDATE }}</td>
|
||||
</tr>
|
||||
<tr v-if="hs && pd.HAVESCHEME==1 && hs.LISTNAME">
|
||||
<td class="tbg">隐患清单</td>
|
||||
<td>{{ hs.LISTNAME }}</td>
|
||||
</tr>
|
||||
<tr v-if="hs && pd.HAVESCHEME==1">
|
||||
<td class="tbg">治理标准要求</td>
|
||||
<td>{{ hs.GOVERNSTANDARDS }}</td>
|
||||
</tr>
|
||||
<tr v-if="hs && pd.HAVESCHEME==1">
|
||||
<td class="tbg">治理方法</td>
|
||||
<td>{{ hs.GOVERNMETHOD }}</td>
|
||||
</tr>
|
||||
<tr v-if="hs && pd.HAVESCHEME==1">
|
||||
<td class="tbg">经费和物资的落实</td>
|
||||
<td>{{ hs.EXPENDITURE }}</td>
|
||||
</tr>
|
||||
<tr v-if="hs && pd.HAVESCHEME==1">
|
||||
<td class="tbg">负责治理人员</td>
|
||||
<td>{{ hs.PRINCIPAL }}</td>
|
||||
</tr>
|
||||
<tr v-if="hs && pd.HAVESCHEME==1">
|
||||
<td class="tbg">工时安排</td>
|
||||
<td>{{ hs.PROGRAMMING }}</td>
|
||||
</tr>
|
||||
<tr v-if="hs && pd.HAVESCHEME==1">
|
||||
<td class="tbg">时限要求</td>
|
||||
<td>{{ hs.TIMELIMITFOR }}</td>
|
||||
</tr>
|
||||
<tr v-if="hs && pd.HAVESCHEME==1">
|
||||
<td class="tbg">工作要求</td>
|
||||
<td>{{ hs.JOBREQUIREMENT }}</td>
|
||||
</tr>
|
||||
<tr v-if="hs && pd.HAVESCHEME==1">
|
||||
<td class="tbg">其他事项</td>
|
||||
<td>{{ hs.OTHERBUSINESS }}</td>
|
||||
</tr>
|
||||
<tr v-if="hs && pd.HAVESCHEME==1">
|
||||
<td class="tbg">方案图片</td>
|
||||
<td class="img-select">
|
||||
<viewer :images="sImgs">
|
||||
<img v-for="item in sImgs" :src="config.fileUrl + item.FILEPATH" :key="item.IMGFILES_ID" width="100" height="100">
|
||||
</viewer>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div v-if="pd.STATE ==4 && pd.STATE !=8" class="level-line"/>
|
||||
<div v-if="pd.STATE ==4 && pd.STATE !=8" class="print-break">
|
||||
<div class="level-line"/>
|
||||
<div class="level-title">
|
||||
<h1>验收信息</h1>
|
||||
</div>
|
||||
<template v-if="pd.RECTIFICATIONTYPE!='1'">
|
||||
<table v-for="(data) in checkList" :key="data.value" class="table-ui">
|
||||
<tr>
|
||||
<td class="tbg">验收描述</td>
|
||||
<td>{{ data.CHECKDESCR }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">是否合格</td>
|
||||
<td>
|
||||
<template v-if="data.STATUS=='1'">
|
||||
是
|
||||
</template>
|
||||
<template v-else-if="data.STATUS=='0'">
|
||||
否
|
||||
</template>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">验收部门</td>
|
||||
<td>{{ data.CHECKDEPTNAME }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">验收人</td>
|
||||
<td>{{ data.CHECKORNAME }}</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="tbg">验收时间</td>
|
||||
<td>{{ data.CHECK_TIME }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">验收图片</td>
|
||||
<td class="img-select">
|
||||
<viewer :images="data.cImgs">
|
||||
<img v-for="item in data.cImgs" :src="config.fileUrl + item.FILEPATH" :key="item.IMGFILES_ID" width="100" height="100">
|
||||
</viewer>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</template>
|
||||
<template v-if="pd.RECTIFICATIONTYPE=='1'">
|
||||
<table class="table-ui">
|
||||
<tr>
|
||||
<td class="tbg">验收人</td>
|
||||
<td>{{ pd.CHECKORNAME }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</template>
|
||||
</div>
|
||||
<div v-if="pd.FINAL_CHECK" class="level-line"/>
|
||||
<div v-if="pd.FINAL_CHECK" class="print-break">
|
||||
<div class="level-title">
|
||||
<h1>安全环保检查验收信息</h1>
|
||||
</div>
|
||||
<template>
|
||||
<table class="mb-20 table-ui">
|
||||
<tr>
|
||||
<td class="tbg">验收描述</td>
|
||||
<td>{{ pd.FINAL_CHECKDESCR }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">是否合格</td>
|
||||
<td>
|
||||
<template v-if="pd.FINAL_CHECK=='1'">
|
||||
是
|
||||
</template>
|
||||
<template v-else-if="pd.FINAL_CHECK=='2'">
|
||||
否
|
||||
</template>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">验收人</td>
|
||||
<td>{{ pd.FINAL_CHECKOR_NAME }}</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="tbg">验收时间</td>
|
||||
<td>{{ pd.FINAL_CHECKTIME }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">验收图片</td>
|
||||
<td class="img-select">
|
||||
<viewer :images="fcImgs">
|
||||
<img v-for="item in fcImgs" :src="config.fileUrl + item.FILEPATH" :key="item.IMGFILES_ID" width="100" height="100">
|
||||
</viewer>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</template>
|
||||
</div>
|
||||
<div v-if="pd.FINAL_CHECK" class="level-line"/>
|
||||
<div v-if="pd.INSPECTION_ASSESS_ID" class="print-break">
|
||||
<div class="level-title">
|
||||
<h1>安全环保检查考评</h1>
|
||||
</div>
|
||||
<template>
|
||||
<table class="mb-20 table-ui">
|
||||
<tr>
|
||||
<td class="tbg">考评扣分</td>
|
||||
<td>{{ pd.ASSESS_SCORE }}</td>
|
||||
<td class="tbg">处罚金额</td>
|
||||
<td>{{ validStr(pd.ASSESS_PENALTY_AMOUNT) ? pd.ASSESS_PENALTY_AMOUNT + '元' : '' }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
<div class="ui-height"/>
|
||||
</el-scrollbar>
|
||||
<span slot="footer">
|
||||
<el-button v-print="'#printTest'" type="primary">打 印</el-button>
|
||||
<el-button v-if="!fullscreen" plain type="info" @click="allin('open')">全 屏</el-button>
|
||||
<el-button v-if="fullscreen" plain type="info" @click="allin('close')">关闭全屏</el-button>
|
||||
<el-button plain type="info" @click="back">返 回</el-button>
|
||||
</span>
|
||||
<browse-util ref="browseUtil" :type="message"/>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Pagination from '@/components/Pagination' // 通过 el-pagination二次打包
|
||||
import formatDate from '@/utils/dateformat'
|
||||
import { requestFN } from '@/utils/request'
|
||||
import browseUtil from './browseUtil'
|
||||
|
||||
// 改前需知
|
||||
// 该组件需要做的通用些!!
|
||||
// 点检记录中也使用了这个组件展示隐患信息!!
|
||||
|
||||
export default {
|
||||
components: { Pagination, browseUtil },
|
||||
data() {
|
||||
return {
|
||||
HIDDEN_ID: '', // 主键ID
|
||||
pd: [], // 存放字段参数
|
||||
hs: [],
|
||||
checkList: [],
|
||||
repulsecause: [],
|
||||
msg: 'add',
|
||||
pageType: '',
|
||||
config: config,
|
||||
hImgs: [],
|
||||
rImgs: [],
|
||||
sImgs: [],
|
||||
fcImgs: [],
|
||||
dialogVisible: false,
|
||||
hiddenFindPeople: [],
|
||||
hiddenExamineList: [],
|
||||
message: '',
|
||||
videoUrl: '',
|
||||
appendToBody: false,
|
||||
fullscreen: false
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
init(id, appendToBody) {
|
||||
this.dialogVisible = true
|
||||
if (appendToBody) {
|
||||
this.appendToBody = true
|
||||
}
|
||||
this.getData(id)
|
||||
},
|
||||
getData(hiddenId) {
|
||||
this.listLoading = true
|
||||
requestFN(
|
||||
'/hidden/goEdit',
|
||||
{
|
||||
HIDDEN_ID: hiddenId,
|
||||
tm: new Date().getTime()
|
||||
}
|
||||
).then((data) => {
|
||||
var vm = this
|
||||
vm.pd = data.pd // 参数map
|
||||
vm.hs = data.hs // 参数map
|
||||
vm.checkList = data.checkList
|
||||
this.hImgs = data.hImgs
|
||||
this.rImgs = data.rImgs
|
||||
this.sImgs = data.sImgs
|
||||
this.fcImgs = data.fcImgs
|
||||
this.repulsecause = data.repulsecause
|
||||
this.hiddenFindPeople = data.hiddenFindPeople
|
||||
if (data.hiddenVideo.length > 0) {
|
||||
this.videoUrl = data.hiddenVideo[0].FILEPATH
|
||||
} else {
|
||||
this.videoUrl = ''
|
||||
}
|
||||
this.hiddenExamineList = data.hiddenExa
|
||||
if (data.hiddenExa.length > 0) {
|
||||
data.hiddenExa.forEach(item => {
|
||||
if (item.TYPE === 0) {
|
||||
this.pd.oldUserName = item.editUserName
|
||||
this.pd.oldDeptName = item.editDeptName
|
||||
this.pd.oldLevelName = item.editLevelName
|
||||
this.pd.oldRectificationDeadline = item.spare3
|
||||
}
|
||||
})
|
||||
}
|
||||
this.$forceUpdate()
|
||||
}).catch((e) => {
|
||||
console.log(e)
|
||||
this.listLoading = false
|
||||
})
|
||||
},
|
||||
back() {
|
||||
this.dialogVisible = false
|
||||
},
|
||||
allin(condition) {
|
||||
if (condition === 'open') {
|
||||
this.fullscreen = true
|
||||
} else {
|
||||
this.fullscreen = false
|
||||
}
|
||||
},
|
||||
formatDate(date, format) {
|
||||
return formatDate(date, format)
|
||||
},
|
||||
openUtil(type, url) {
|
||||
this.message = type
|
||||
if (type === 'video') {
|
||||
this.$refs.browseUtil.init(this.videoUrl, type)
|
||||
} else {
|
||||
this.$refs.browseUtil.init(url)
|
||||
}
|
||||
},
|
||||
transformation(code) {
|
||||
switch (code) {
|
||||
case '-2':
|
||||
return '待确认'
|
||||
case '0':
|
||||
return '未提交'
|
||||
case '1':
|
||||
return '未整改'
|
||||
case '2':
|
||||
return '已整改'
|
||||
case '3':
|
||||
return '已复查'
|
||||
case '4':
|
||||
return '已验收'
|
||||
case '5':
|
||||
return '待处理的特殊申请隐患'
|
||||
case '6':
|
||||
return '重大隐患'
|
||||
case '7':
|
||||
return '待处理的特殊隐患'
|
||||
case '8':
|
||||
return '处理的特殊隐患'
|
||||
case '9':
|
||||
return ''
|
||||
case '10':
|
||||
return '验收打回'
|
||||
case '11':
|
||||
return '分公司安委会办公室副主任核定'
|
||||
case '12':
|
||||
return '分公司安委会办公室副主任核实'
|
||||
case '13':
|
||||
return '港股分公司安委会办公室副主任核定、重大隐患待整改'
|
||||
case '14':
|
||||
return '重大隐患待验收'
|
||||
case '15':
|
||||
return '重大隐患已归档'
|
||||
case '16':
|
||||
return '确认打回'
|
||||
case '100':
|
||||
return '安全环保检查暂存的隐患'
|
||||
case '101':
|
||||
return '待指派'
|
||||
case '102':
|
||||
return '指派中'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="sass" scoped>
|
||||
.table-ui
|
||||
.tbg
|
||||
width: 150px
|
||||
|
||||
.img-flex
|
||||
display: flex
|
||||
|
||||
.img-ui
|
||||
width: 240px
|
||||
height: 240px
|
||||
margin-right: 20px
|
||||
|
||||
& img
|
||||
width: 100%
|
||||
height: 100%
|
||||
</style>
|
||||
|
||||
<style scoped>
|
||||
.information >>> .el-scrollbar__wrap {
|
||||
overflow-x: hidden;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,104 @@
|
|||
<template>
|
||||
<div>
|
||||
<el-dialog v-loading="Loading" v-if="SuperFlowData.dialogVisible" :visible.sync="SuperFlowData.dialogVisible" :title="'流程图'" width="80%" top="5vh">
|
||||
<div style="height:600px;">
|
||||
<SeeksRelationGraph
|
||||
ref="seeksRelationGraph"
|
||||
:options="SuperFlowData.graphOptions"
|
||||
/>
|
||||
</div>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="SuperFlowData.dialogVisible = false">关 闭</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import SeeksRelationGraph from 'relation-graph'
|
||||
import { requestFN } from '@/utils/request'
|
||||
import Pagination from '@/components/Pagination' // 通过 el-pagination二次打包
|
||||
|
||||
export default {
|
||||
components: { Pagination, SeeksRelationGraph },
|
||||
data() {
|
||||
return {
|
||||
Loading: false,
|
||||
SuperFlowData: {
|
||||
dialogVisible: false,
|
||||
graphOptions: {
|
||||
debug: true,
|
||||
disableDragNode: true,
|
||||
defaultNodeHeight: '200',
|
||||
layouts: [
|
||||
{
|
||||
label: '中心',
|
||||
layoutName: 'tree',
|
||||
layoutClassName: 'seeks-layout-center',
|
||||
defaultJunctionPoint: 'border',
|
||||
defaultNodeShape: 0,
|
||||
defaultLineShape: 1,
|
||||
from: 'left',
|
||||
min_per_width: '300',
|
||||
max_per_width: '600',
|
||||
min_per_height: '40',
|
||||
max_per_height: '60',
|
||||
levelDistance: ''
|
||||
}
|
||||
],
|
||||
defaultNodeShape: 1,
|
||||
defaultNodeWidth: '200',
|
||||
defaultLineShape: 4,
|
||||
defaultJunctionPoint: 'lr',
|
||||
defaultNodeBorderWidth: 0
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
init(row) {
|
||||
this.SuperFlowData.dialogVisible = true
|
||||
// this.getInformation(row)
|
||||
},
|
||||
getInformation(row) {
|
||||
this.Loading = true
|
||||
requestFN(
|
||||
'/safetyenvironmental/getFlow',
|
||||
{
|
||||
INSPECTION_ID: row.INSPECTION_ID
|
||||
}
|
||||
).then((data) => {
|
||||
console.log(data.nodes, data.from)
|
||||
this.viewFlowChart(data.nodes, data.from)
|
||||
this.Loading = false
|
||||
}).catch((e) => {
|
||||
this.Loading = false
|
||||
})
|
||||
},
|
||||
viewFlowChart(nodes, from) {
|
||||
console.log(nodes)
|
||||
console.log(from)
|
||||
this.$nextTick(() => {
|
||||
const __graph_json_data = {
|
||||
nodes: nodes,
|
||||
links: from
|
||||
}
|
||||
this.$refs.seeksRelationGraph.setJsonData(__graph_json_data, (seeksRGGraph) => {
|
||||
// 这些写上当图谱初始化完成后需要执行的代码
|
||||
this.Loading = false
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="sass" >
|
||||
.print-approval-img
|
||||
width: 2px
|
||||
height: 97px
|
||||
display: inline-block
|
||||
img
|
||||
width: 20px
|
||||
height: 20px
|
||||
</style>
|
||||
|
|
@ -0,0 +1,68 @@
|
|||
export const archiveList = [
|
||||
{
|
||||
ISDELETE: '0',
|
||||
INSPECTION_TYPE_NAME: '月度安全检查',
|
||||
INSPECTED_SITEUSER_ID: 'df57edb0fc1f48a59e2696f5fa4105c7',
|
||||
INSPECTION_ORIGINATOR_ID: 'df57edb0fc1f48a59e2696f5fa4105c7',
|
||||
INSPECTION_ORIGINATOR_NAME: '秦港股份一公司',
|
||||
INSPECTION_SUBJECT: '环保',
|
||||
INSPECTED_EXPLAIN: '',
|
||||
INSPECTION_ID: '5f27862c864f48759cd7499afea44f10',
|
||||
INSPECTION_TYPE: 'INSPECTION_TYPE002',
|
||||
CREATOR: 'df57edb0fc1f48a59e2696f5fa4105c7',
|
||||
INSPECTION_TYPE_OTHER: '',
|
||||
INSPECTION_USER_NAME: '测试账号,秦港股份一公司',
|
||||
INSPECTED_SITEUSER_SIGN_TIME: '2023-12-28 16:44',
|
||||
INSPECTION_USER_ID:
|
||||
'47f238b9d8d44c11bf5894bee71911d7,df57edb0fc1f48a59e2696f5fa4105c7',
|
||||
OPERATTIME: '2023-12-28 16:49:43',
|
||||
INSPECTED_DEPARTMENT_ID: '035958e685cf4850bc40151c5e0617a6',
|
||||
INSPECTION_TIME_START: '2023-12-28 16:40',
|
||||
INSPECTION_SOURCE: '5',
|
||||
INSPECTED_DEPARTMENT_NAME: '秦港股份一公司',
|
||||
INSPECTION_LEADDEPARTMENT_ID: '035958e685cf4850bc40151c5e0617a6',
|
||||
INSPECTION_LEADDEPARTMENT_NAME: '秦港股份一公司',
|
||||
INSPECTION_PLACE: '123',
|
||||
CORPINFO_ID: '035958e685cf4850bc40151c5e0617a6',
|
||||
INSPECTED_SITEUSER_SIGN_IMG:
|
||||
'/uploadFiles/file/035958e685cf4850bc40151c5e0617a6/20231228/dff0e7a4900a4dc88decfa471864f517.png',
|
||||
INSPECTION_TIME_END: '2023-12-30 00:00',
|
||||
INSPECTION_STATUS: '8',
|
||||
OPERATOR: 'df57edb0fc1f48a59e2696f5fa4105c7',
|
||||
INSPECTED_SITEUSER_NAME: '秦港股份一公司',
|
||||
INSPECTION_DEPARTMENT_NAME: '秦港股份一公司',
|
||||
CREATTIME: '2023-12-28 16:41:35'
|
||||
},
|
||||
{
|
||||
ISDELETE: '0',
|
||||
INSPECTION_TYPE_NAME: '周检查',
|
||||
INSPECTED_SITEUSER_ID: 'df57edb0fc1f48a59e2696f5fa4105c7',
|
||||
INSPECTION_ORIGINATOR_ID: '1',
|
||||
INSPECTION_ORIGINATOR_NAME: '系统管理员',
|
||||
INSPECTION_SUBJECT: '安全',
|
||||
INSPECTED_EXPLAIN: '',
|
||||
INSPECTION_ID: '13ee7cf839564cc9b7b42fd5344111c4',
|
||||
INSPECTION_TYPE: 'INSPECTION_TYPE008',
|
||||
CREATOR: '1',
|
||||
INSPECTION_TYPE_OTHER: '',
|
||||
INSPECTION_USER_NAME: '系统管理员,河港港工',
|
||||
INSPECTED_SITEUSER_SIGN_TIME: '2023-12-28 16:00',
|
||||
INSPECTION_USER_ID: '1,29241f8f50ef4dc2ba426f310180df73',
|
||||
OPERATTIME: '2023-12-28 16:21:47',
|
||||
INSPECTED_DEPARTMENT_ID: '035958e685cf4850bc40151c5e0617a6',
|
||||
INSPECTION_TIME_START: '2023-12-13 00:00',
|
||||
INSPECTION_SOURCE: '4',
|
||||
INSPECTED_DEPARTMENT_NAME: '秦港股份一公司',
|
||||
INSPECTION_LEADDEPARTMENT_ID: '3a854eefa7894e06aaa1a2611bca80f6',
|
||||
INSPECTION_LEADDEPARTMENT_NAME: '河港港工',
|
||||
INSPECTION_PLACE: 'LLXCheckLocation',
|
||||
CORPINFO_ID: '035958e685cf4850bc40151c5e0617a6',
|
||||
INSPECTED_SITEUSER_SIGN_IMG:
|
||||
'/uploadFiles/file/035958e685cf4850bc40151c5e0617a6/20231228/f13f20306b9f45ecbe416a109948c699.png',
|
||||
INSPECTION_TIME_END: '2023-12-27 00:00',
|
||||
INSPECTION_STATUS: '6',
|
||||
OPERATOR: 'df57edb0fc1f48a59e2696f5fa4105c7',
|
||||
INSPECTED_SITEUSER_NAME: '秦港股份一公司',
|
||||
CREATTIME: '2023-12-28 15:22:54'
|
||||
}
|
||||
]
|
||||
|
|
@ -0,0 +1,673 @@
|
|||
<template>
|
||||
<div>
|
||||
<div class="app-container">
|
||||
<div class="level-title">
|
||||
<h1>隐患信息</h1>
|
||||
</div>
|
||||
<div class="mb-20">
|
||||
<table class="table-ui">
|
||||
<tr>
|
||||
<td class="tbg">隐患来源</td>
|
||||
<template v-if="pd.SOURCE=='1'">
|
||||
<td>隐患快报</td>
|
||||
</template>
|
||||
<template v-else-if="pd.SOURCE=='2'">
|
||||
<td>清单排查</td>
|
||||
</template>
|
||||
<template v-else-if="pd.SOURCE=='3'">
|
||||
<td>清单排查</td>
|
||||
</template>
|
||||
<template v-else-if="pd.SOURCE=='4'">
|
||||
<td>安全环保检查(监管端)</td>
|
||||
</template>
|
||||
<template v-else-if="pd.SOURCE=='5'">
|
||||
<td>安全环保检查(企业端)</td>
|
||||
</template>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">隐患描述</td>
|
||||
<td>{{ pd.HIDDENDESCR }}</td>
|
||||
</tr>
|
||||
<tr v-if="pd.SOURCE=='2'">
|
||||
<td class="tbg">风险点(单元)</td>
|
||||
<td>{{ pd.RISK_UNIT }}</td>
|
||||
</tr>
|
||||
<tr v-if="pd.SOURCE=='2'">
|
||||
<td class="tbg">辨识部位</td>
|
||||
<td>{{ pd.IDENTIFICATION }}</td>
|
||||
</tr>
|
||||
<tr v-if="pd.SOURCE=='2'">
|
||||
<td class="tbg">存在风险</td>
|
||||
<td class="tbg">存在风险</td>
|
||||
<td>{{ pd.RISK_DESCR }}</td>
|
||||
</tr>
|
||||
<tr v-if="pd.SOURCE=='2'">
|
||||
<td class="tbg">风险分级</td>
|
||||
<td>{{ pd.LEVEL }}</td>
|
||||
</tr>
|
||||
<tr v-if="pd.SOURCE=='2'">
|
||||
<td class="tbg">检查内容</td>
|
||||
<td>{{ pd.CHECK_CONTENT }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">隐患级别</td>
|
||||
<td>{{ pd.HIDDENLEVELNAME }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">隐患类型</td>
|
||||
<td>{{ pd.HIDDENTYPENAME }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">隐患状态</td>
|
||||
<td>
|
||||
<template v-if="pd.STATE=='1'">
|
||||
未整改
|
||||
</template>
|
||||
<template v-else-if="pd.STATE=='2'">
|
||||
已整改
|
||||
</template>
|
||||
<template v-else-if="pd.STATE=='3'">
|
||||
已验收
|
||||
</template>
|
||||
<template v-else-if="pd.STATE=='4'">
|
||||
已验收
|
||||
</template>
|
||||
<template v-else-if="pd.STATE=='8'">
|
||||
特殊处置审核
|
||||
</template>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">隐患部位</td>
|
||||
<td>{{ pd.hregionName?pd.hregionName:pd.HIDDENPART }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">隐患上报位置</td>
|
||||
<td>经度:{{ pd.LONGITUDE }} , 纬度:{{ pd.LATITUDE }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">隐患位置描述</td>
|
||||
<td>{{ pd.POSITIONDESC }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">隐患图片</td>
|
||||
<td class="img-select">
|
||||
<viewer :images="hImgs">
|
||||
<img v-for="item in hImgs" :src="config.fileUrl + item.FILEPATH" :key="item.IMGFILES_ID" width="100" height="100">
|
||||
</viewer>
|
||||
</td>
|
||||
</tr>
|
||||
<tr v-for="item in hiddenFindPeople" :key="item.USER_ID">
|
||||
<td class="tbg">隐患发现人 </td>
|
||||
<td>{{ item.NAME }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">隐患发现时间</td>
|
||||
<td>{{ pd.CREATTIME }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">整改类型</td>
|
||||
<td>
|
||||
<template v-if="pd.RECTIFICATIONTYPE=='1'">
|
||||
立即整改
|
||||
</template>
|
||||
<template v-else-if="pd.RECTIFICATIONTYPE=='2'">
|
||||
限期整改
|
||||
</template>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">整改负责人</td>
|
||||
<td >{{ pd.oldUserName }}</td>
|
||||
</tr>
|
||||
<tr v-if="pd.RECTIFICATIONTYPE=='2'">
|
||||
<td class="tbg">整改完成期限</td>
|
||||
<td>{{ pd.oldRectificationDeadline }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">是否是相关方</td>
|
||||
<td>{{ pd.ISRELEVANT ==='1'?'是':'否' }}</td>
|
||||
</tr>
|
||||
|
||||
<tr v-if="playerOptions.sources[0].src">
|
||||
<td class="tbg">隐患视频</td>
|
||||
<td>
|
||||
<span style="color: #4395ff;cursor: pointer" @click="dialogVideoVisible = true">隐患视频</span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<div v-for="(item,index) in hiddenExamineList" :key="index">
|
||||
<div class="level-line" />
|
||||
<div class="level-title">
|
||||
<h1 v-if="item.TYPE === 4">确认信息</h1>
|
||||
<h1 v-else-if="item.TYPE === 2">延期信息</h1>
|
||||
<h1 v-else-if="item.TYPE === 1">特殊处理审核信息</h1>
|
||||
</div>
|
||||
<table v-if="item.TYPE === 4" class="table-ui">
|
||||
<tr>
|
||||
<td class="tbg">隐患级别</td>
|
||||
<td >{{ item.editLevelName }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">整改负责人</td>
|
||||
<td >{{ item.editUserName }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">整改完成期限</td>
|
||||
<td >{{ item.spare3 }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">隐患确认人</td>
|
||||
<td>{{ pd.conUserName }}</td>
|
||||
</tr>
|
||||
<tr >
|
||||
<td class="tbg">隐患确认时间</td>
|
||||
<td>{{ pd.CONFIRM_TIME }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table v-else-if="item.TYPE === 2" class="table-ui">
|
||||
<tr>
|
||||
<td class="tbg">申请延期日期</td>
|
||||
<td >{{ item.DELAY_TIME }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">审核人</td>
|
||||
<td>{{ pd.conUserName }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">处置方案</td>
|
||||
<td >{{ item.DISPOSAL_PLAN }}</td>
|
||||
</tr>
|
||||
<tr v-if="item.DISPOSAL_FILE">
|
||||
<td class="tbg">方案附件</td>
|
||||
<td><a style="color: #1e9fff" @click="goViewPdf(item.DISPOSAL_FILE)">[预览]</a> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">延期审核状态</td>
|
||||
<template v-if="item.STATE===-1">
|
||||
<td>待审核</td>
|
||||
</template>
|
||||
<template v-else-if="item.STATE===1">
|
||||
<td>通过</td>
|
||||
</template>
|
||||
<template v-else-if="item.STATE===2">
|
||||
<td>未通过</td>
|
||||
</template>
|
||||
</tr>
|
||||
<tr v-if="item.STATE===1">
|
||||
<td class="tbg">审核时间</td>
|
||||
<td>{{ item.OPERATTIME }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table v-else-if="item.TYPE === 1" class="table-ui">
|
||||
<tr>
|
||||
<td class="tbg">无法整改原因</td>
|
||||
<td >{{ item.EXAMINE }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">特殊处置审核状态</td>
|
||||
<template v-if="item.STATE===-1">
|
||||
<td>待审核</td>
|
||||
</template>
|
||||
<template v-else-if="item.STATE===2">
|
||||
<td>通过</td>
|
||||
</template>
|
||||
<template v-else-if="item.STATE===1">
|
||||
<td>未通过</td>
|
||||
</template>
|
||||
</tr>
|
||||
<tr v-if="item.STATE===2">
|
||||
<td class="tbg">处置方案</td>
|
||||
<td>{{ item.DISPOSAL_PLAN }}</td>
|
||||
</tr>
|
||||
<tr v-if="item.STATE===2 && item.DISPOSAL_FILE">
|
||||
<td class="tbg">处置方案附件</td>
|
||||
<td><a style="color: #1e9fff" @click="goViewPdf(item.DISPOSAL_FILE)">[预览]</a></td>
|
||||
</tr>
|
||||
<tr v-if="item.STATE!==-1">
|
||||
<td class="tbg">审核时间</td>
|
||||
<td>{{ item.OPERATTIME }}</td>
|
||||
</tr>
|
||||
<tr v-if="item.STATE!==-1">
|
||||
<td class="tbg">审核人</td>
|
||||
<td>{{ pd.conUserName }}</td>
|
||||
</tr>
|
||||
<tr v-if="item.TYPE ==='2'">
|
||||
<td class="tbg">是否更换整改负责人</td>
|
||||
<td v-if="item.spare1==='1'">是</td>
|
||||
<td v-if="item.spare1==='0'">否</td>
|
||||
</tr>
|
||||
<tr v-if="item.spare1==='1'">
|
||||
<td class="tbg">整改负责人</td>
|
||||
<td >{{ item.NEWRECTIFICATIONOR }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div v-show="pd.STATE>=2 && pd.STATE !=8">
|
||||
<div class="level-line" />
|
||||
<div class="level-title">
|
||||
<h1>整改信息</h1>
|
||||
</div>
|
||||
<table class="table-ui">
|
||||
<tr>
|
||||
<td class="tbg">整改描述</td>
|
||||
<td>{{ pd.RECTIFYDESCR }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">整改部门</td>
|
||||
<td>{{ pd.RECTIFICATIONDEPTNAME }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">整改人</td>
|
||||
<td>{{ pd.RECTIFICATIONORNAME }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">整改时间</td>
|
||||
<td>{{ pd.RECTIFICATIONTIME }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">投入资金</td>
|
||||
<td>{{ pd.INVESTMENT_FUNDS }}元</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">整改后图片</td>
|
||||
<td class="img-select">
|
||||
<viewer :images="rImgs">
|
||||
<img v-for="item in rImgs" :src="config.fileUrl + item.FILEPATH" :key="item.IMGFILES_ID" width="100" height="100">
|
||||
</viewer>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">整改方案</td>
|
||||
<td v-if="pd.HAVESCHEME==0">无</td>
|
||||
<td v-else-if="pd.HAVESCHEME==1">有</td>
|
||||
<td v-else/>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="level-line" />
|
||||
</div>
|
||||
<div v-show="hs.HIDDENSCHEME_ID && pd.HAVESCHEME==1">
|
||||
<div class="level-title">
|
||||
<h1>整改方案</h1>
|
||||
</div>
|
||||
<table class="table-ui">
|
||||
<tr>
|
||||
<td class="tbg">排查日期</td>
|
||||
<td>{{ hs.SCREENINGDATE }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">隐患清单</td>
|
||||
<td>{{ hs.LISTNAME }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">治理标准要求</td>
|
||||
<td>{{ hs.GOVERNSTANDARDS }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">治理方法</td>
|
||||
<td>{{ hs.GOVERNMETHOD }}</td>
|
||||
</tr>
|
||||
<tr >
|
||||
<td class="tbg">经费和物资的落实</td>
|
||||
<td>{{ hs.EXPENDITURE }}</td>
|
||||
</tr>
|
||||
<tr >
|
||||
<td class="tbg">负责治理人员</td>
|
||||
<td>{{ hs.PRINCIPAL }}</td>
|
||||
</tr>
|
||||
<tr >
|
||||
<td class="tbg">工时安排</td>
|
||||
<td>{{ hs.PROGRAMMING }}</td>
|
||||
</tr>
|
||||
<tr >
|
||||
<td class="tbg">时限要求</td>
|
||||
<td>{{ hs.TIMELIMITFOR }}</td>
|
||||
</tr>
|
||||
<tr >
|
||||
<td class="tbg">工作要求</td>
|
||||
<td>{{ hs.JOBREQUIREMENT }}</td>
|
||||
</tr>
|
||||
<tr >
|
||||
<td class="tbg">其他事项</td>
|
||||
<td>{{ hs.OTHERBUSINESS }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">方案图片</td>
|
||||
<td class="img-select">
|
||||
<viewer :images="sImgs">
|
||||
<img v-for="item in sImgs" :src="config.fileUrl + item.FILEPATH" :key="item.IMGFILES_ID" width="100" height="100">
|
||||
</viewer>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="level-line" />
|
||||
</div>
|
||||
<div v-show="pd.STATE == 4">
|
||||
<div class="level-line" />
|
||||
<div class="level-title">
|
||||
<h1>验收信息</h1>
|
||||
</div>
|
||||
<template >
|
||||
<table v-for="(data) in checkList" :key="data.value" class="table-ui">
|
||||
<tr>
|
||||
<td class="tbg">验收描述</td>
|
||||
<td>{{ data.CHECKDESCR }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">是否合格</td>
|
||||
<td>
|
||||
<template v-if="data.STATUS=='1'">
|
||||
是
|
||||
</template>
|
||||
<template v-else-if="data.STATUS=='0'">
|
||||
否
|
||||
</template>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">验收部门</td>
|
||||
<td>{{ data.CHECKDEPTNAME }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">验收人</td>
|
||||
<td>{{ data.CHECKORNAME }}</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="tbg">验收时间</td>
|
||||
<td>{{ data.CHECK_TIME }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">验收图片</td>
|
||||
<td class="img-select">
|
||||
<viewer :images="data.cImgs">
|
||||
<img v-for="item in data.cImgs" :src="config.fileUrl + item.FILEPATH" :key="item.IMGFILES_ID" width="100" height="100">
|
||||
</viewer>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</template>
|
||||
</div>
|
||||
|
||||
<div class="mt-20">
|
||||
<div class="level-title">
|
||||
<h1>安全环保检查验收</h1>
|
||||
</div>
|
||||
<div>
|
||||
<el-form ref="form" :rules="formRule" :model="form" label-width="90px">
|
||||
<el-form-item label="是否合格" prop="FINAL_CHECK">
|
||||
<el-radio-group ref="FINAL_CHECK" v-model="form.FINAL_CHECK">
|
||||
<el-radio label="1" value="1" >是</el-radio>
|
||||
<el-radio label="2" value="2" >否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item prop="FINAL_CHECKDESCR" label="验收意见" >
|
||||
<el-input ref="FINAL_CHECKDESCR" v-model="form.FINAL_CHECKDESCR" placeholder="验收意见"/>
|
||||
</el-form-item>
|
||||
<el-form-item prop="FINAL_CHECKTIME" label="验收时间" >
|
||||
<el-date-picker ref="FINAL_CHECKTIME" v-model="form.FINAL_CHECKTIME" type="date" value-format="yyyy-MM-dd" placeholder="选择日期" />
|
||||
</el-form-item>
|
||||
<el-form-item label="验收图片" >
|
||||
<el-upload
|
||||
ref="upload"
|
||||
:on-preview="handlePictureCardPreview"
|
||||
:before-upload="beforeFileUpload"
|
||||
:auto-upload="false"
|
||||
class="avatar-uploader"
|
||||
action="#"
|
||||
accept=".jpg,.jpeg,.png"
|
||||
list-type="picture-card">
|
||||
<i class="el-icon-plus" />
|
||||
</el-upload>
|
||||
<el-dialog :visible.sync="dialogVisible">
|
||||
<img :src="check_imgList" width="100%" alt="">
|
||||
</el-dialog>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="ui-height" />
|
||||
<div class="ui-foot">
|
||||
<el-button type="primary" @click="save">保 存</el-button>
|
||||
<el-button plain type="info" @click="back">返 回</el-button>
|
||||
</div>
|
||||
<el-dialog :visible.sync="dialogVideoVisible" title="隐患视频">
|
||||
<div>
|
||||
<video-player
|
||||
ref="videoPlayer"
|
||||
:playsinline="true"
|
||||
:options="playerOptions"
|
||||
style="width: 100%;"
|
||||
class="video-player vjs-custom-skin"/>
|
||||
</div>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="dialogVideoVisible = false">关 闭</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
<el-dialog :visible.sync="dialogViewPdf" title="文档" width="600px">
|
||||
<div>
|
||||
<iframe :src="pdfUrl" width="500px" height="500px" frameborder="1" />
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Pagination from '@/components/Pagination'
|
||||
import waves from '@/directive/waves'
|
||||
import { requestFN } from '@/utils/request'
|
||||
import { upload } from '@/utils/upload'
|
||||
import 'video.js/dist/video-js.css'
|
||||
import { videoPlayer } from 'vue-video-player'
|
||||
export default {
|
||||
components: { Pagination, videoPlayer },
|
||||
directives: { waves },
|
||||
data() {
|
||||
return {
|
||||
config: config,
|
||||
HIDDEN_ID: '', // 主键ID
|
||||
pd: {}, // 存放字段参数 Wesdddrrrf 呃呃呃呃,
|
||||
hs: {},
|
||||
checkList: [],
|
||||
check: [],
|
||||
msg: 'add',
|
||||
check_files: [],
|
||||
check_imgList: [],
|
||||
FINAL_CHECK: '1',
|
||||
rImgs: [],
|
||||
hImgs: [],
|
||||
cImgs: [],
|
||||
sImgs: [],
|
||||
form: {
|
||||
FINAL_CHECK: '1',
|
||||
FINAL_CHECKTIME: '',
|
||||
FINAL_CHECKDESCR: ''
|
||||
},
|
||||
formRule: {
|
||||
FINAL_CHECKTIME: [{ required: true, message: '请输入验收时间', trigger: 'blur' }],
|
||||
FINAL_CHECKDESCR: [{ required: true, message: '请输入验收描述', trigger: 'blur' }],
|
||||
check_imgList: [{ required: true, message: '请上传验收照片', trigger: 'blur' }]
|
||||
},
|
||||
dialogVisible: false,
|
||||
playerOptions: {
|
||||
playbackRates: [0.5, 1.0, 1.5, 2.0], // 可选的播放速度
|
||||
autoplay: false, // 如果为true,浏览器准备好时开始回放。
|
||||
muted: false, // 默认情况下将会消除任何音频。
|
||||
loop: false, // 是否视频一结束就重新开始。
|
||||
preload: 'auto', // 建议浏览器在<video>加载元素后是否应该开始下载视频数据。auto浏览器选择最佳行为,立即开始加载视频(如果浏览器支持)
|
||||
language: 'zh-CN',
|
||||
aspectRatio: '16:9', // 将播放器置于流畅模式,并在计算播放器的动态大小时使用该值。值应该代表一个比例 - 用冒号分隔的两个数字(例如"16:9"或"4:3")
|
||||
fluid: true, // 当true时,Video.js player将拥有流体大小。换句话说,它将按比例缩放以适应其容器。
|
||||
sources: [{
|
||||
type: 'video/mp4', // 类型
|
||||
src: '' // url地址
|
||||
}],
|
||||
poster: '', // 封面地址
|
||||
notSupportedMessage: '此视频暂无法播放,请稍后再试', // 允许覆盖Video.js无法播放媒体源时显示的默认信息。
|
||||
controlBar: {
|
||||
timeDivider: true, // 当前时间和持续时间的分隔符
|
||||
durationDisplay: true, // 显示持续时间
|
||||
remainingTimeDisplay: false, // 是否显示剩余时间功能
|
||||
fullscreenToggle: true // 是否显示全屏按钮
|
||||
}
|
||||
},
|
||||
dialogVideoVisible: false,
|
||||
// pdf预览
|
||||
pdfUrl: '',
|
||||
pageNum: 1,
|
||||
pageTotalNum: 1, // 总页数
|
||||
dialogViewPdf: false,
|
||||
hiddenFindPeople: [],
|
||||
hiddenExamineList: []
|
||||
}
|
||||
},
|
||||
created() {
|
||||
if (this.$parent.HIDDEN_ID) {
|
||||
this.HIDDEN_ID = this.$parent.HIDDEN_ID
|
||||
this.getData()
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getData() {
|
||||
requestFN(
|
||||
'/hidden/goEdit',
|
||||
{
|
||||
HIDDEN_ID: this.HIDDEN_ID,
|
||||
tm: new Date().getTime()
|
||||
}
|
||||
).then((data) => {
|
||||
if (data.result == 'success') {
|
||||
this.pd = data.pd // 参数map
|
||||
this.hs = Object.assign(this.hs, data.hs) // 参数map
|
||||
this.checkList = data.checkList
|
||||
this.hImgs = data.hImgs
|
||||
this.rImgs = data.rImgs
|
||||
this.cImgs = data.cImgs
|
||||
this.sImgs = data.sImgs
|
||||
this.hiddenFindPeople = data.hiddenFindPeople
|
||||
if (data.hiddenVideo.length > 0) {
|
||||
this.playerOptions.sources[0].src = config.fileUrl + data.hiddenVideo[0].FILEPATH
|
||||
}
|
||||
this.hiddenExamineList = data.hiddenExa
|
||||
data.hiddenExa.forEach(item => {
|
||||
if (item.TYPE === 4) {
|
||||
this.pd.oldUserName = item.oldUserName
|
||||
this.pd.oldDeptName = item.oldDeptName
|
||||
this.pd.oldLevelName = item.oldLevelName
|
||||
this.pd.oldRectificationDeadline = item.spare3
|
||||
}
|
||||
})
|
||||
}
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
},
|
||||
goViewPdf(filePath) {
|
||||
this.pageNum = 1
|
||||
this.pdfUrl = this.config.fileUrl + filePath
|
||||
// this.pdfUrl = 'http://192.168.50.60:8082/file/' + filePath
|
||||
console.info(this.pdfUrl)
|
||||
|
||||
this.dialogViewPdf = true
|
||||
},
|
||||
// 返回列表
|
||||
back() {
|
||||
this.$parent.activeName = 'HiddenList'
|
||||
},
|
||||
handlePictureCardPreview(file) {
|
||||
this.check_imgList = file.url
|
||||
this.dialogVisible = true
|
||||
},
|
||||
beforeFileUpload(file) {
|
||||
const types = ['image/jpeg', 'image/jpg', 'image/png']
|
||||
const isImage = types.includes(file.type)
|
||||
if (!isImage) {
|
||||
this.$message.error('上传图片只能是 JPG、JPEG、PNG 格式!')
|
||||
} else {
|
||||
this.check_imgList.push(file)
|
||||
}
|
||||
},
|
||||
save() {
|
||||
var _this = this
|
||||
this.$refs.form.validate(valid => {
|
||||
if (valid) {
|
||||
requestFN(
|
||||
'/hidden/finalcheck',
|
||||
{
|
||||
HIDDEN_ID: this.HIDDEN_ID,
|
||||
FINAL_CHECKDESCR: this.form.FINAL_CHECKDESCR,
|
||||
FINAL_CHECKTIME: this.form.FINAL_CHECKTIME,
|
||||
FINAL_CHECK: this.form.FINAL_CHECK,
|
||||
INSPECTION_ID: this.pd.FOREIGN_ID,
|
||||
tm: new Date().getTime()
|
||||
}
|
||||
).then((data) => {
|
||||
if (data.result == 'success') {
|
||||
this.saveCheckImg(_this.HIDDEN_ID)
|
||||
this.$parent.activeName = 'HiddenList'
|
||||
}
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
})
|
||||
},
|
||||
saveCheckImg(imgKeyId) {
|
||||
this.$refs.upload.submit()
|
||||
var _this = this
|
||||
var todata = new FormData()
|
||||
for (var i = 0; i < _this.check_imgList.length; i++) {
|
||||
if (_this.check_imgList[i]) {
|
||||
todata.append('FFILE', _this.check_imgList[i])
|
||||
}
|
||||
}
|
||||
if (!todata.get('FFILE')) {
|
||||
return
|
||||
}
|
||||
todata.append('FOREIGN_KEY', imgKeyId)
|
||||
todata.append('TYPE', 50)
|
||||
upload(
|
||||
'/imgfiles/add',
|
||||
todata
|
||||
).then((data) => {
|
||||
if (data.result == 'success') {
|
||||
this.$message({
|
||||
message: '保存成功',
|
||||
type: 'success'
|
||||
})
|
||||
}
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="sass" scoped>
|
||||
.form-flex
|
||||
display: flex
|
||||
align-items: center
|
||||
margin-bottom: 18px
|
||||
.form-item
|
||||
width: 300px
|
||||
.el-form-item--small.el-form-item
|
||||
margin-bottom: 0
|
||||
.table-ui
|
||||
.tbg
|
||||
width: 150px
|
||||
.img-flex
|
||||
display: flex
|
||||
.img-ui
|
||||
width: 240px
|
||||
height: 240px
|
||||
margin-right: 20px
|
||||
& img
|
||||
width: 100%
|
||||
height: 100%
|
||||
</style>
|
||||
|
|
@ -0,0 +1,412 @@
|
|||
<template>
|
||||
<div>
|
||||
<div class="app-container">
|
||||
<div class="dialogContent mb-20">
|
||||
<div class="level-title">
|
||||
<h1>隐患信息</h1>
|
||||
</div>
|
||||
<div class="mb-20">
|
||||
<table class="table-ui">
|
||||
<tr>
|
||||
<td class="tbg">隐患描述</td>
|
||||
<td colspan="3">{{ form.HIDDENDESCR }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">隐患发现人</td>
|
||||
<td>{{ form.CREATORNAME }}</td>
|
||||
<td class="tbg">隐患级别</td>
|
||||
<td>{{ form.HIDDENLEVELNAME }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">隐患发现时间</td>
|
||||
<td>{{ form.DISCOVERYTIME }}</td>
|
||||
<td class="tbg">隐患部位</td>
|
||||
<td>{{ form.hregionName?form.hregionName:form.HIDDENPART }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">隐患位置描述</td>
|
||||
<td>{{ form.POSITIONDESC }}</td>
|
||||
<td class="tbg">是否是相关方</td>
|
||||
<td>{{ form.ISRELEVANT ==='1'?'是':'否' }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">隐患类型</td>
|
||||
<td>{{ form.HIDDENTYPENAME }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">隐患位置</td>
|
||||
<td colspan="3">
|
||||
<el-button icon="el-icon-place" circle @click="showMap(form)" />
|
||||
<span>
|
||||
经度:{{ form.LONGITUDE }} , 纬度:{{ form.LATITUDE }}
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">隐患图片</td>
|
||||
<td colspan="3">
|
||||
<div v-for="(data, index) in form.hiddenImgs" :key="'hdImg'+index" class="demo-image__preview" style="float: left; margin-right: 5px">
|
||||
<el-image
|
||||
:src="config.fileUrl + data.FILEPATH"
|
||||
:preview-src-list="new Array(config.fileUrl + data.FILEPATH)"
|
||||
style="width: 100px; height: 100px"/>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr v-if="form.hiddenVideos">
|
||||
<td class="tbg">隐患视频</td>
|
||||
<td colspan="3">
|
||||
|
||||
<div v-for="(data, index) in form.hiddenVideos" :key="'hdVideo'+index" class="demo-image__preview" style="float: left; margin-right: 5px">
|
||||
<el-button icon="el-icon-video-camera" circle @click="goViewVideo(data)"/>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<el-form ref="form" :rules="formRule" :model="form" label-width="0px">
|
||||
<div class="level-title">
|
||||
<h1>隐患确认</h1>
|
||||
</div>
|
||||
<div class="mb-20">
|
||||
<table class="table-ui">
|
||||
<tr v-if="state === '-2'">
|
||||
<td class="tbg">隐患确认人</td>
|
||||
<td>
|
||||
<el-form-item prop="CONFIRM_USER" style="margin-top: 10px;margin-bottom: 10px">
|
||||
<el-select v-model="form.CONFIRM_USER" placeholder="请选择">
|
||||
<el-option v-for="item in confirmUserList" :key="item.USER_ID" :label="item.NAME" :value="item.USER_ID" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</td>
|
||||
</tr>
|
||||
<tr v-else>
|
||||
<td class="tbg">隐患确认人</td>
|
||||
<td colspan="3">{{ form.conUserName }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</el-form>
|
||||
</div>
|
||||
|
||||
<el-dialog :visible.sync="dialogMap" :title="'隐患位置'" width="80%">
|
||||
<div>
|
||||
<iframe id="iframe" ref="iframe" :src="iframeSrc" frameborder="0" allowtransparency="true" width="100%" height="600"/>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog :visible.sync="dialogViewVideo" title="视频" width="800px" @close="closePlay">
|
||||
<div>
|
||||
<video-player
|
||||
ref="hdVideoPlayer"
|
||||
:playsinline="true"
|
||||
:options="playerOptions"
|
||||
class="video-player vjs-custom-skin"/>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<video id="videoPlayer" controls="controls" crossOrigin="anonymous" style="display: none">
|
||||
<source id="videoSource" src="" type="video/mp4">
|
||||
</video>
|
||||
<canvas id="canvasVideo" style="display: none"/>
|
||||
|
||||
<div class="ui-height" />
|
||||
<div class="ui-foot">
|
||||
<el-button type="primary" @click="confirm">保 存</el-button>
|
||||
<el-button plain type="info" @click="goBack">返 回</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { requestFN } from '@/utils/request'
|
||||
import dateformat from '@/utils/dateformat'
|
||||
import SelectTree from '@/components/SelectTree'
|
||||
import { videoPlayer } from 'vue-video-player'
|
||||
import 'video.js/dist/video-js.css'
|
||||
|
||||
export default {
|
||||
components: { SelectTree, videoPlayer },
|
||||
data() {
|
||||
return {
|
||||
listLoading: true,
|
||||
config: config,
|
||||
iframeSrc: '',
|
||||
dialogMap: false,
|
||||
state: this.$parent.HIDDEN_STATUS,
|
||||
treeData: [],
|
||||
defaultProps: {
|
||||
value: 'id',
|
||||
children: 'nodes',
|
||||
label: 'name'
|
||||
},
|
||||
confirmUserList: [], // 隐患确认人
|
||||
rectifyUserList: [], // 隐患整改人
|
||||
acceptUserList: [], // 验收人
|
||||
form: {
|
||||
HIDDENDESCR: '', // 隐患描述
|
||||
CREATORNAME: '', // 隐患责任人
|
||||
HIDDENLEVELNAME: '', // 隐患级别
|
||||
DISCOVERYTIME: '', // 隐患发现时间
|
||||
hregionName: '', // 隐患部位
|
||||
HIDDENPART: '',
|
||||
HIDDENTYPENAME: '', // 隐患类型1
|
||||
HIDDENTYPENAME2: '', // 隐患类型2
|
||||
LONGITUDE: '', // 隐患坐标经度
|
||||
LATITUDE: '', // 隐患坐标纬度
|
||||
hiddenImgs: [], // 隐患图片
|
||||
hiddenVideos: [], // 隐患视频
|
||||
|
||||
CONFIRM_USER: '', // 隐患确认人
|
||||
conUserName: '',
|
||||
|
||||
RECTIFICATIONTYPE: '2', // 隐患处置
|
||||
RECTIFICATIONDEADLINE: '', // 整改期限
|
||||
RECTIFICATIONDEPT: '', // 隐患整改人部门
|
||||
RECTIFICATIONDEPTNAME: '',
|
||||
RECTIFICATIONOR: '', // 隐患整改人
|
||||
RECTIFICATIONORNAME: '',
|
||||
CHECKDEPT: '', // 验收部门
|
||||
CHECKDEPTNAME: '',
|
||||
CHECKOR: '', // 验收人
|
||||
CHECKORNAME: '',
|
||||
HIDDEN_ID: '',
|
||||
POSITIONDESC: '',
|
||||
ISRELEVANT: ''
|
||||
},
|
||||
formRule: {
|
||||
CONFIRM_USER: [{ required: true, message: '请选择隐患确认人', trigger: 'blur' }]
|
||||
},
|
||||
dialogViewVideo: false,
|
||||
playerOptions: {
|
||||
playbackRates: [0.5, 1.0, 1.5, 2.0], // 可选的播放速度
|
||||
autoplay: false, // 如果为true,浏览器准备好时开始回放。
|
||||
muted: false, // 默认情况下将会消除任何音频。
|
||||
loop: false, // 是否视频一结束就重新开始。
|
||||
preload: 'auto', // 建议浏览器在<video>加载元素后是否应该开始下载视频数据。auto浏览器选择最佳行为,立即开始加载视频(如果浏览器支持)
|
||||
language: 'zh-CN',
|
||||
aspectRatio: '16:9', // 将播放器置于流畅模式,并在计算播放器的动态大小时使用该值。值应该代表一个比例 - 用冒号分隔的两个数字(例如"16:9"或"4:3")
|
||||
fluid: true, // 当true时,Video.js player将拥有流体大小。换句话说,它将按比例缩放以适应其容器。
|
||||
sources: [{
|
||||
type: 'video/mp4', // 类型
|
||||
src: '' // url地址
|
||||
}],
|
||||
poster: '', // 封面地址
|
||||
notSupportedMessage: '此视频暂无法播放,请稍后再试', // 允许覆盖Video.js无法播放媒体源时显示的默认信息。
|
||||
controlBar: {
|
||||
timeDivider: true, // 当前时间和持续时间的分隔符
|
||||
durationDisplay: true, // 显示持续时间
|
||||
remainingTimeDisplay: true, // 是否显示剩余时间功能
|
||||
fullscreenToggle: true // 是否显示全屏按钮
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
'form.RECTIFICATIONDEPT': {
|
||||
handler: function(newVal, oldVal) {
|
||||
this.form.RECTIFICATIONOR = ''
|
||||
this.getReUserList(newVal)
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
created() {
|
||||
this.iframeSrc = this.config.weburl + 'static/mapshow.html?t=' + Math.random()
|
||||
},
|
||||
async mounted() {
|
||||
this.getConfirmUserList()
|
||||
await this.getTreeList()
|
||||
await this.getData()
|
||||
},
|
||||
methods: {
|
||||
formatTime(date, column) {
|
||||
if (date) {
|
||||
return dateformat(date, 'YYYY年MM月DD日HH时mm分')
|
||||
} else {
|
||||
return ''
|
||||
}
|
||||
},
|
||||
getData() {
|
||||
return new Promise((resolve) => {
|
||||
requestFN(
|
||||
'/hidden/goEdit',
|
||||
{
|
||||
HIDDEN_ID: this.$parent.HIDDEN_ID
|
||||
}
|
||||
).then((data) => {
|
||||
console.info(data.pd)
|
||||
this.form = Object.assign(this.form, data.pd) // copy obj
|
||||
this.form.hiddenImgs = data.hImgs
|
||||
this.form.hiddenVideos = data.hiddenVideo
|
||||
this.form.hiddenList.forEach(item => {
|
||||
if (item.hiddenVideos.length > 0) {
|
||||
this.$set(item.hiddenVideos[0], 'IMGFILEPATH', this.findvideocover(item.hiddenVideos[0]))
|
||||
}
|
||||
})
|
||||
this.listLoading = false
|
||||
console.info(this.form)
|
||||
resolve()
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
})
|
||||
},
|
||||
findvideocover(item) {
|
||||
const source = document.getElementById('videoSource') // 获取视频对象
|
||||
source.src = this.config.fileUrl + item.FILEPATH
|
||||
const video = document.getElementById('videoPlayer')
|
||||
video.currentTime = 1 // 第一帧
|
||||
video.load()
|
||||
var canvas = document.getElementById('canvasVideo') // 获取 canvas 对象
|
||||
video.oncanplay = () => {
|
||||
// 利用canvas对象方法绘图
|
||||
canvas.getContext('2d').drawImage(video, 0, 0, video.clientWidth, video.clientHeight)
|
||||
// 转换成base64形式
|
||||
item.IMGFILEPATH = canvas.toDataURL('image/png') // 截取后的视频封面
|
||||
}
|
||||
},
|
||||
// 部门
|
||||
getTreeList() {
|
||||
return new Promise((resolve) => {
|
||||
requestFN(
|
||||
'/department/listTree',
|
||||
{}
|
||||
).then((data) => {
|
||||
this.treeData = JSON.parse(data.zTreeNodes)
|
||||
|
||||
resolve()
|
||||
}).catch((e) => {
|
||||
})
|
||||
})
|
||||
},
|
||||
getConfirmUserList() { // 根据选择的隐患确认部门显示隐患确认人
|
||||
this.listLoading = true
|
||||
requestFN(
|
||||
'/user/getHiddenConfirm',
|
||||
{
|
||||
tm: new Date().getTime(),
|
||||
IS_HAZARDCONFIRMER: '1'
|
||||
}
|
||||
).then((data) => {
|
||||
this.confirmUserList = data.userList
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
},
|
||||
// 获取整改人列表
|
||||
getReUserList(DEPARTMENT_ID) {
|
||||
if (DEPARTMENT_ID) {
|
||||
requestFN(
|
||||
'/user/listAll',
|
||||
{ DEPARTMENT_ID: DEPARTMENT_ID }
|
||||
).then((data) => {
|
||||
this.rectifyUserList = data.userList
|
||||
}).catch((e) => {
|
||||
})
|
||||
}
|
||||
},
|
||||
// 修改其他检查人部门
|
||||
updateOtherDep(DEPARTMENT_ID, i) {
|
||||
this.form.CHECKOR = ''
|
||||
this.getUserList(DEPARTMENT_ID, i)
|
||||
},
|
||||
getUserList(DEPARTMENT_ID, index) {
|
||||
this.listLoading = true
|
||||
requestFN(
|
||||
'/user/listAll',
|
||||
{
|
||||
DEPARTMENT_ID: DEPARTMENT_ID,
|
||||
tm: new Date().getTime()
|
||||
}
|
||||
).then((data) => {
|
||||
this.acceptUserList = data.userList
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
},
|
||||
|
||||
// 保存
|
||||
confirm() {
|
||||
this.$refs.form.validate(valid => {
|
||||
if (valid) {
|
||||
const loading = this.$loading({
|
||||
lock: true,
|
||||
text: '数据保存中...',
|
||||
spinner: 'el-icon-loading',
|
||||
background: 'rgba(0, 0, 0, 0.7)'
|
||||
})
|
||||
this.listLoading = true
|
||||
requestFN(
|
||||
'/hidden/assign',
|
||||
{ ...this.form,
|
||||
HIDDEN_STATUS: this.$parent.HIDDEN_STATUS,
|
||||
INSPECTION_ID: this.$parent.INSPECTION_ID
|
||||
}
|
||||
).then((data) => {
|
||||
this.$message({
|
||||
message: '保存成功',
|
||||
type: 'success'
|
||||
})
|
||||
this.listLoading = false
|
||||
loading.close()
|
||||
this.goBack()
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
loading.close()
|
||||
})
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
})
|
||||
},
|
||||
goViewVideo(row) {
|
||||
const type = row.FILEPATH.slice(row.FILEPATH.lastIndexOf('.') + 1)
|
||||
this.playerOptions.sources[0].src = this.config.fileUrl + row.FILEPATH
|
||||
this.playerOptions.poster = this.config.fileUrl + row.IMGFILEPATH
|
||||
this.playerOptions.sources[0].type = 'video/' + type
|
||||
this.dialogViewVideo = true
|
||||
},
|
||||
closePlay() {
|
||||
this.$refs.hdVideoPlayer.player.pause()
|
||||
},
|
||||
showMap(obj) {
|
||||
this.dialogMap = true
|
||||
this.iframeSrc = this.config.weburl + 'static/mapshow.html?t=' + Math.random()
|
||||
this.$nextTick(() => {
|
||||
const iframe = document.querySelector('#iframe')
|
||||
// 处理兼容行问题
|
||||
if (iframe.attachEvent) {
|
||||
iframe.attachEvent('onload', function() {
|
||||
this.contentWindow.postMessage(
|
||||
{
|
||||
'name': obj.HIDDENDESCR,
|
||||
'longitude': Number(obj.LONGITUDE),
|
||||
'latitude': Number(obj.LATITUDE)
|
||||
}, '*')
|
||||
})
|
||||
} else {
|
||||
iframe.onload = function() {
|
||||
this.contentWindow.postMessage(
|
||||
{
|
||||
'name': obj.HIDDENDESCR,
|
||||
'longitude': Number(obj.LONGITUDE),
|
||||
'latitude': Number(obj.LATITUDE)
|
||||
}, '*')
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
goBack() {
|
||||
this.$parent.HIDDEN_ID = ''
|
||||
this.$parent.HIDDEN_STATUS = ''
|
||||
this.$parent.activeName = 'HiddenList'
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
</style>
|
||||
|
|
@ -0,0 +1,644 @@
|
|||
<template>
|
||||
<div>
|
||||
<div id="printTest" class="app-container">
|
||||
<div class="level-title">
|
||||
<h1>隐患信息</h1>
|
||||
</div>
|
||||
<div class="mb-20">
|
||||
<table class="table-ui">
|
||||
<tr>
|
||||
<td class="tbg">隐患来源</td>
|
||||
<template v-if="pd.SOURCE=='1'">
|
||||
<td>隐患快报</td>
|
||||
</template>
|
||||
<template v-else-if="pd.SOURCE=='2'">
|
||||
<td>清单排查</td>
|
||||
</template>
|
||||
<template v-else-if="pd.SOURCE=='3'">
|
||||
<td>清单排查</td>
|
||||
</template>
|
||||
<template v-else-if="pd.SOURCE=='4'">
|
||||
<td>安全环保检查(监管端)</td>
|
||||
</template>
|
||||
<template v-else-if="pd.SOURCE=='5'">
|
||||
<td>安全环保检查(企业端)</td>
|
||||
</template>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">隐患描述</td>
|
||||
<td>{{ pd.HIDDENDESCR }}</td>
|
||||
</tr>
|
||||
<tr v-if="pd.SOURCE=='2'">
|
||||
<td class="tbg">风险点(单元)</td>
|
||||
<td>{{ pd.RISK_UNIT }}</td>
|
||||
</tr>
|
||||
<tr v-if="pd.SOURCE=='2'">
|
||||
<td class="tbg">辨识部位</td>
|
||||
<td>{{ pd.IDENTIFICATION }}</td>
|
||||
</tr>
|
||||
<tr v-if="pd.SOURCE=='2'">
|
||||
<td class="tbg">存在风险</td>
|
||||
<td>{{ pd.RISK_DESCR }}</td>
|
||||
</tr>
|
||||
<tr v-if="pd.SOURCE=='2'">
|
||||
<td class="tbg">风险分级</td>
|
||||
<td>{{ pd.LEVEL }}</td>
|
||||
</tr>
|
||||
<tr v-if="pd.SOURCE=='2'">
|
||||
<td class="tbg">检查内容</td>
|
||||
<td>{{ pd.CHECK_CONTENT }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">隐患级别</td>
|
||||
<td >{{ pd.editLevelName?pd.editLevelName:'' }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">隐患类型</td>
|
||||
<td>{{ pd.HIDDENTYPENAME }}</td>
|
||||
</tr>
|
||||
<!--<tr>
|
||||
<td class="tbg">隐患类型2</td>
|
||||
<td>{{ pd.HIDDENTYPENAME2 }}</td>
|
||||
</tr>-->
|
||||
<tr>
|
||||
<td class="tbg">隐患部位</td>
|
||||
<td>{{ pd.hregionName?pd.hregionName:pd.HIDDENPART }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">隐患上报位置</td>
|
||||
<td>经度:{{ pd.LONGITUDE }} , 纬度:{{ pd.LATITUDE }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">隐患位置描述</td>
|
||||
<td>{{ pd.POSITIONDESC }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">隐患图片</td>
|
||||
<td class="img-select">
|
||||
<viewer :images="hImgs">
|
||||
<img v-for="item in hImgs" :src="config.fileUrl + item.FILEPATH" :key="item.IMGFILES_ID" width="100" height="100">
|
||||
</viewer>
|
||||
</td>
|
||||
</tr>
|
||||
<tr v-if="playerOptions.sources[0].src">
|
||||
<td class="tbg">隐患视频</td>
|
||||
<td>
|
||||
<span style="color: #4395ff;cursor: pointer" @click="dialogVisible = true">隐患视频</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr v-for="(item, index) in hiddenFindPeople" :key="index">
|
||||
<td class="tbg">隐患发现人</td>
|
||||
<td>{{ item.NAME }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">隐患发现时间</td>
|
||||
<td>{{ pd.DISCOVERYTIME }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">整改类型</td>
|
||||
<td>
|
||||
<template v-if="pd.RECTIFICATIONTYPE=='1'">
|
||||
立即整改
|
||||
</template>
|
||||
<template v-else-if="pd.RECTIFICATIONTYPE=='2'">
|
||||
限期整改
|
||||
</template>
|
||||
</td>
|
||||
</tr>
|
||||
<tr v-if="pd.RECTIFICATIONTYPE=='1'">
|
||||
<td class="tbg">整改描述</td>
|
||||
<td>{{ pd.RECTIFYDESCR }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">整改负责部门</td>
|
||||
<td >{{ pd.editDeptName ?pd.editDeptName :pd.RECTIFICATIONDEPTNAME }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">整改负责人</td>
|
||||
<td >{{ pd.editUserName ?pd.editUserName :pd.RECTIFICATIONORNAME }}</td>
|
||||
</tr>
|
||||
<tr v-if="pd.oldRectificationDeadline || pd.RECTIFICATIONDEADLINE"/><tr v-if="pd.RECTIFICATIONTYPE=='1'">
|
||||
<td class="tbg">整改后图片</td>
|
||||
<td class="img-select">
|
||||
<viewer :images="rImgs">
|
||||
<img v-for="item in rImgs" :src="config.fileUrl + item.FILEPATH" :key="item.IMGFILES_ID" width="100" height="100">
|
||||
</viewer>
|
||||
</td>
|
||||
</tr>
|
||||
<tr >
|
||||
<td class="tbg">整改完成期限</td>
|
||||
<td >{{ pd.editRectificationDeadline ?pd.editRectificationDeadline :'' }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">是否相关方</td>
|
||||
<td>{{ pd.ISRELEVANT=='1'?'是':'否' }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div v-if = "$parent.activeType === 'confirm'" >
|
||||
<div class="level-title">
|
||||
<h1>确认信息</h1>
|
||||
</div>
|
||||
<table class="table-ui">
|
||||
<tr>
|
||||
<td class="tbg">隐患级别</td>
|
||||
<td v-if="pd.STATE == '-2' && $parent.activeType === 'confirm' && pd.SOURCE !== '4' && pd.SOURCE !== '5'">
|
||||
<SelectTree
|
||||
ref="hiddenLevenlTree_Select"
|
||||
:clearable="false"
|
||||
:options="hiddenlevelList"
|
||||
:props="defaultProps"
|
||||
v-model="pd.HIDDENLEVEL"
|
||||
:canparent="false"
|
||||
children-name="nodes"
|
||||
placeholder="请选择" />
|
||||
</td>
|
||||
<td v-else>{{ pd.HIDDENLEVELNAME }}</td>
|
||||
</tr>
|
||||
<tr v-if="pd.RECTIFICATIONTYPE=='1'">
|
||||
<td class="tbg">是否整改完成</td>
|
||||
<td>
|
||||
<el-radio v-model="isTrue" label="1" value="1" >是</el-radio>
|
||||
<el-radio v-model="isTrue" label="2" value="2" >否</el-radio>
|
||||
</td>
|
||||
</tr>
|
||||
<tr v-if="showStatus && pd.RECTIFICATIONTYPE=='2' || isTrue =='2'">
|
||||
<td class="tbg">整改负责人</td>
|
||||
<td v-if="pd.STATE == '-2' && $parent.activeType === 'confirm'">
|
||||
<SelectTree
|
||||
v-if="rectificationDeptList.length !== 0"
|
||||
ref="deptTree"
|
||||
:clearable="false"
|
||||
:options="rectificationDeptList"
|
||||
:props="defaultProps"
|
||||
v-model="pd.RECTIFICATIONDEPT"
|
||||
placeholder="请选择整改负责人"
|
||||
@change="updateOtherDep(pd.RECTIFICATIONDEPT)"
|
||||
/>
|
||||
<el-select v-model="pd.RECTIFICATIONOR" placeholder="请选择">
|
||||
<el-option v-for="item in rectificationUserList" :key="item.USER_ID" :label="item.NAME" :value="item.USER_ID" />
|
||||
</el-select>
|
||||
</td>
|
||||
<td v-else>{{ pd.RECTIFICATIONORNAME }}</td>
|
||||
</tr>
|
||||
<tr v-if="showStatus && pd.RECTIFICATIONTYPE=='2' || isTrue =='2'">
|
||||
<td class="tbg">整改完成期限</td>
|
||||
<td v-if="pd.STATE == '-2' && $parent.activeType === 'confirm'">
|
||||
<el-date-picker v-model="pd.RECTIFICATIONDEADLINE" value-format="yyyy-MM-dd" type="date" placeholder="这里输入整改完成期限" />
|
||||
</td>
|
||||
<td v-else>{{ pd.RECTIFICATIONDEADLINE }}</td>
|
||||
</tr>
|
||||
<tr v-if="pd.STATE != '-2' && $parent.activeType === 'view'">
|
||||
<td class="tbg">隐患确认人</td>
|
||||
<td>{{ pd.conUserName }}</td>
|
||||
</tr>
|
||||
<tr v-if="pd.STATE != '-2' && $parent.activeType === 'view'">
|
||||
<td class="tbg">隐患确认时间</td>
|
||||
<td>{{ pd.CONFIRM_TIME }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div v-if="pd.STATE !='-2'" >
|
||||
<div class="level-title">
|
||||
<h1>确认信息</h1>
|
||||
</div>
|
||||
<table class="table-ui">
|
||||
<tr>
|
||||
<td class="tbg">隐患级别</td>
|
||||
<td >{{ pd.HIDDENLEVELNAME }}</td>
|
||||
</tr>
|
||||
<tr >
|
||||
<td class="tbg">整改负责人部门</td>
|
||||
<td >{{ pd.RECTIFICATIONDEPTNAME }}</td>
|
||||
</tr>
|
||||
<tr >
|
||||
<td class="tbg">整改负责人</td>
|
||||
<td >{{ pd.RECTIFICATIONORNAME }}</td>
|
||||
</tr>
|
||||
<tr >
|
||||
<td class="tbg">整改完成期限</td>
|
||||
<td >{{ pd.RECTIFICATIONDEADLINE }}</td>
|
||||
</tr>
|
||||
<tr >
|
||||
<td class="tbg">隐患确认人</td>
|
||||
<td>{{ pd.conUserName }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">隐患确认时间</td>
|
||||
<td>{{ pd.CONFIRM_TIME }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div v-if="pd.RECTIFICATIONOR || pd.RECTIFICATIONTYPE=='1' ">
|
||||
<div class="level-title">
|
||||
<h1>整改信息</h1>
|
||||
</div>
|
||||
<table class="table-ui">
|
||||
<tr>
|
||||
<td class="tbg">整改描述</td>
|
||||
<td>{{ pd.RECTIFYDESCR }}</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="tbg">整改部门</td>
|
||||
<td>{{ pd.RECTIFICATIONDEPTNAME }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">整改人</td>
|
||||
<td>{{ pd.RECTIFICATIONORNAME }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">整改时间</td>
|
||||
<td>{{ pd.RECTIFICATIONTIME }}</td>
|
||||
</tr>
|
||||
<tr v-if="pd.INVESTMENT_FUNDS">
|
||||
<td class="tbg">投入资金</td>
|
||||
<td>{{ pd.INVESTMENT_FUNDS }}元</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">整改后图片</td>
|
||||
<td class="img-select">
|
||||
<viewer :images="rImgs">
|
||||
<img v-for="item in rImgs" :src="config.fileUrl + item.FILEPATH" :key="item.IMGFILES_ID" width="100" height="100">
|
||||
</viewer>
|
||||
</td>
|
||||
</tr>
|
||||
<tr v-if="pd.HAVESCHEME">
|
||||
<td class="tbg">整改方案</td>
|
||||
<td v-if="pd.HAVESCHEME==0">无</td>
|
||||
<td v-else-if="pd.HAVESCHEME==1">有</td>
|
||||
<td v-else/>
|
||||
</tr>
|
||||
<tr v-if="hs && pd.HAVESCHEME==1">
|
||||
<td class="tbg">排查日期</td>
|
||||
<td>{{ hs.SCREENINGDATE }}</td>
|
||||
</tr>
|
||||
<tr v-if="hs && pd.HAVESCHEME==1">
|
||||
<td class="tbg">隐患清单</td>
|
||||
<td>{{ hs.LISTNAME }}</td>
|
||||
</tr>
|
||||
<tr v-if="hs && pd.HAVESCHEME==1">
|
||||
<td class="tbg">治理标准要求</td>
|
||||
<td>{{ hs.GOVERNSTANDARDS }}</td>
|
||||
</tr>
|
||||
<tr v-if="hs && pd.HAVESCHEME==1">
|
||||
<td class="tbg">治理方法</td>
|
||||
<td>{{ hs.GOVERNMETHOD }}</td>
|
||||
</tr>
|
||||
<tr v-if="hs && pd.HAVESCHEME==1">
|
||||
<td class="tbg">经费和物资的落实</td>
|
||||
<td>{{ hs.EXPENDITURE }}</td>
|
||||
</tr>
|
||||
<tr v-if="hs && pd.HAVESCHEME==1">
|
||||
<td class="tbg">负责治理人员</td>
|
||||
<td>{{ hs.PRINCIPAL }}</td>
|
||||
</tr>
|
||||
<tr v-if="hs && pd.HAVESCHEME==1">
|
||||
<td class="tbg">工时安排</td>
|
||||
<td>{{ hs.PROGRAMMING }}</td>
|
||||
</tr>
|
||||
<tr v-if="hs && pd.HAVESCHEME==1">
|
||||
<td class="tbg">时限要求</td>
|
||||
<td>{{ hs.TIMELIMITFOR }}</td>
|
||||
</tr>
|
||||
<tr v-if="hs && pd.HAVESCHEME==1">
|
||||
<td class="tbg">工作要求</td>
|
||||
<td>{{ hs.JOBREQUIREMENT }}</td>
|
||||
</tr>
|
||||
<tr v-if="hs && pd.HAVESCHEME==1">
|
||||
<td class="tbg">其他事项</td>
|
||||
<td>{{ hs.OTHERBUSINESS }}</td>
|
||||
</tr>
|
||||
<tr v-if="hs && pd.HAVESCHEME==1">
|
||||
<td class="tbg">方案图片</td>
|
||||
<td class="img-select">
|
||||
<viewer :images="sImgs">
|
||||
<img v-for="item in sImgs" :src="config.fileUrl + item.FILEPATH" :key="item.IMGFILES_ID" width="100" height="100">
|
||||
</viewer>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div v-show="pd.STATE ==4 || pd.RECTIFICATIONTYPE=='1'">
|
||||
<div class="level-line" />
|
||||
<div class="level-title">
|
||||
<h1>验收信息</h1>
|
||||
</div>
|
||||
<template v-if="pd.RECTIFICATIONTYPE!='1'">
|
||||
<table v-for="(data) in checkList" :key="data.value" class="table-ui">
|
||||
<tr>
|
||||
<td class="tbg">验收描述</td>
|
||||
<td>{{ data.CHECKDESCR }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">是否合格</td>
|
||||
<td>
|
||||
<template v-if="data.STATUS=='1'">
|
||||
是
|
||||
</template>
|
||||
<template v-else-if="data.STATUS=='0'">
|
||||
否
|
||||
</template>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">验收部门</td>
|
||||
<td>{{ data.CHECKDEPTNAME }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">验收人</td>
|
||||
<td>{{ data.CHECKORNAME }}</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="tbg">验收时间</td>
|
||||
<td>{{ data.CHECK_TIME }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">验收图片</td>
|
||||
<td class="img-select">
|
||||
<viewer :images="data.cImgs">
|
||||
<img v-for="item in data.cImgs" :src="config.fileUrl + item.FILEPATH" :key="item.IMGFILES_ID" width="100" height="100">
|
||||
</viewer>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</template>
|
||||
<template v-if="pd.RECTIFICATIONTYPE=='1'">
|
||||
<table class="table-ui">
|
||||
<tr>
|
||||
<td class="tbg">验收人</td>
|
||||
<td>{{ pd.CHECKORNAME }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</template>
|
||||
</div>
|
||||
|
||||
<div class="ui-height" />
|
||||
<div class="ui-foot">
|
||||
<el-button plain type="info" @click="back">返 回</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<el-dialog :visible.sync="dialogVisible" title="隐患视频">
|
||||
<div>
|
||||
<video-player
|
||||
v-if="dialogVisible"
|
||||
ref="videoPlayer"
|
||||
:playsinline="true"
|
||||
:options="playerOptions"
|
||||
style="width: 100%;"
|
||||
class="video-player vjs-custom-skin"/>
|
||||
</div>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="dialogVisible = false">关 闭</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Pagination from '@/components/Pagination' // 通过 el-pagination二次打包
|
||||
import { requestFN } from '@/utils/request'
|
||||
import SelectTree from '@/components/SelectTree'
|
||||
import formatDate from '@/utils/dateformat'
|
||||
import 'video.js/dist/video-js.css'
|
||||
import { videoPlayer } from 'vue-video-player'
|
||||
export default {
|
||||
components: { Pagination, SelectTree, videoPlayer },
|
||||
data() {
|
||||
return {
|
||||
HIDDEN_ID: '', // 主键ID
|
||||
pd: {}, // 存放字段参数
|
||||
config: config,
|
||||
hImgs: [],
|
||||
sImgs: [],
|
||||
hiddenlevelList: [],
|
||||
checkList: [],
|
||||
defaultProps: {
|
||||
value: 'id',
|
||||
children: 'nodes',
|
||||
label: 'name',
|
||||
checkStrictly: true
|
||||
},
|
||||
rectificationDeptList: [],
|
||||
rectificationUserList: [],
|
||||
dialogFormtoExamine: false,
|
||||
REJECTOPINION: '',
|
||||
playerOptions: {
|
||||
playbackRates: [0.5, 1.0, 1.5, 2.0], // 可选的播放速度
|
||||
autoplay: false, // 如果为true,浏览器准备好时开始回放。
|
||||
muted: false, // 默认情况下将会消除任何音频。
|
||||
loop: false, // 是否视频一结束就重新开始。
|
||||
preload: 'auto', // 建议浏览器在<video>加载元素后是否应该开始下载视频数据。auto浏览器选择最佳行为,立即开始加载视频(如果浏览器支持)
|
||||
language: 'zh-CN',
|
||||
aspectRatio: '16:9', // 将播放器置于流畅模式,并在计算播放器的动态大小时使用该值。值应该代表一个比例 - 用冒号分隔的两个数字(例如"16:9"或"4:3")
|
||||
fluid: true, // 当true时,Video.js player将拥有流体大小。换句话说,它将按比例缩放以适应其容器。
|
||||
sources: [{
|
||||
type: 'video/mp4', // 类型
|
||||
src: '' // url地址
|
||||
}],
|
||||
poster: '', // 封面地址
|
||||
notSupportedMessage: '此视频暂无法播放,请稍后再试', // 允许覆盖Video.js无法播放媒体源时显示的默认信息。
|
||||
controlBar: {
|
||||
timeDivider: true, // 当前时间和持续时间的分隔符
|
||||
durationDisplay: true, // 显示持续时间
|
||||
remainingTimeDisplay: false, // 是否显示剩余时间功能
|
||||
fullscreenToggle: true // 是否显示全屏按钮
|
||||
}
|
||||
},
|
||||
dialogVisible: false,
|
||||
hiddenFindPeople: [],
|
||||
isTrue: '1',
|
||||
showStatus: true
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
'pd.HIDDENLEVEL': {
|
||||
handler(newVal, oldVal) {
|
||||
if (newVal == 'hiddenLevel1001') {
|
||||
this.showStatus = false
|
||||
} else {
|
||||
this.showStatus = true
|
||||
}
|
||||
this.$forceUpdate()
|
||||
},
|
||||
immediate: false
|
||||
}
|
||||
},
|
||||
created() {
|
||||
console.log(this.$parent.HIDDEN_ID)
|
||||
if (this.$parent.HIDDEN_ID) {
|
||||
this.getData(this.$parent.HIDDEN_ID)
|
||||
}
|
||||
this.getDict()
|
||||
this.getDept()
|
||||
},
|
||||
methods: {
|
||||
getData(hiddenId) {
|
||||
this.listLoading = true
|
||||
requestFN(
|
||||
'/hidden/goEdit',
|
||||
{
|
||||
HIDDEN_ID: hiddenId
|
||||
}
|
||||
).then((data) => {
|
||||
this.pd = data.pd // 参数map
|
||||
this.hImgs = data.hImgs
|
||||
this.rImgs = data.rImgs
|
||||
this.sImgs = data.sImgs
|
||||
this.hs = data.hs
|
||||
this.checkList = data.checkList
|
||||
if (data.hiddenVideo.length > 0) {
|
||||
this.playerOptions.sources[0].src = config.fileUrl + data.hiddenVideo[0].FILEPATH
|
||||
}
|
||||
if (data.pd.RECTIFICATIONDEPT) {
|
||||
this.updateOtherDep(data.pd.RECTIFICATIONDEPT)
|
||||
}
|
||||
if (data.hiddenFindPeople) {
|
||||
this.hiddenFindPeople = data.hiddenFindPeople
|
||||
}
|
||||
if (data.hiddenExa.length > 0) {
|
||||
data.hiddenExa.forEach(item => {
|
||||
if (item.TYPE === 0) {
|
||||
this.pd.editUserName = item.editUserName
|
||||
this.pd.editDeptName = item.editDeptName
|
||||
this.pd.editLevelName = item.editLevelName
|
||||
this.pd.editRectificationDeadline = item.spare3
|
||||
}
|
||||
})
|
||||
}
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
},
|
||||
back() {
|
||||
this.$parent.activeName = 'List'
|
||||
},
|
||||
// 获取数据字典数据
|
||||
getDict() {
|
||||
requestFN(
|
||||
'/dictionaries/listSelectTree',
|
||||
{
|
||||
DICTIONARIES_ID: '5e7cf8620ba54ad89719d0be62133c7a'
|
||||
}
|
||||
).then((data) => {
|
||||
this.hiddenlevelList = JSON.parse(data.zTreeNodes)
|
||||
}).catch((e) => {
|
||||
})
|
||||
},
|
||||
getDept() {
|
||||
requestFN(
|
||||
'/department/listTree',
|
||||
{}
|
||||
).then((data) => {
|
||||
this.rectificationDeptList = JSON.parse(data.zTreeNodes)
|
||||
}).catch((e) => {
|
||||
})
|
||||
},
|
||||
// 修改其他检查人部门
|
||||
updateOtherDep(DEPARTMENT_ID) {
|
||||
this.listLoading = true
|
||||
requestFN(
|
||||
'/user/listAll',
|
||||
{
|
||||
DEPARTMENT_ID: DEPARTMENT_ID,
|
||||
tm: new Date().getTime()
|
||||
}
|
||||
).then((data) => {
|
||||
this.rectificationUserList = data.userList
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
},
|
||||
goConfirm() { // 确认隐患
|
||||
if (this.pd.STATE === '4' || this.pd.STATE === '5') {
|
||||
if (this.pd.HIDDENLEVEL === 'hiddenLevel2002' || this.pd.HIDDENLEVEL === 'hiddenLevel1002') {
|
||||
this.$message.error('此来源隐患不能选择重大、交重大隐患')
|
||||
return
|
||||
}
|
||||
}
|
||||
this.$confirm('是否确认隐患?', {
|
||||
confirmButtonText: '是',
|
||||
cancelButtonText: '否',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.listLoading = true
|
||||
requestFN(
|
||||
'/hidden/confirmHidden',
|
||||
{
|
||||
HIDDEN_ID: this.pd.HIDDEN_ID,
|
||||
HIDDENLEVEL: this.pd.HIDDENLEVEL,
|
||||
isTrue: this.isTrue,
|
||||
RECTIFICATIONDEPT: this.pd.RECTIFICATIONDEPT,
|
||||
RECTIFICATIONOR: this.pd.RECTIFICATIONOR,
|
||||
RECTIFICATIONDEADLINE: this.pd.RECTIFICATIONDEADLINE
|
||||
}
|
||||
).then((data) => {
|
||||
this.$message({
|
||||
message: '确认成功',
|
||||
type: 'success'
|
||||
})
|
||||
this.back()
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
}).catch(() => {
|
||||
})
|
||||
},
|
||||
goRepulse() {
|
||||
this.$confirm('是否确定打回此隐患?', {
|
||||
confirmButtonText: '是',
|
||||
cancelButtonText: '否',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.listLoading = true
|
||||
requestFN(
|
||||
'/hidden/repulseHidden',
|
||||
{
|
||||
HIDDEN_ID: this.pd.HIDDEN_ID,
|
||||
REPULSE_CAUSE: this.REJECTOPINION,
|
||||
TYPE: '6',
|
||||
STATE: '16'
|
||||
}
|
||||
).then((data) => {
|
||||
this.$message({
|
||||
message: '打回成功',
|
||||
type: 'success'
|
||||
})
|
||||
this.back()
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
}).catch(() => {
|
||||
})
|
||||
},
|
||||
// 驳回
|
||||
goreject(row) {
|
||||
this.dialogFormtoExamine = true
|
||||
},
|
||||
formatDate(date, format) {
|
||||
return formatDate(date, format)
|
||||
},
|
||||
info() {
|
||||
console.log(this.pd.HIDDENLEVEL)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="sass" scoped>
|
||||
.table-ui
|
||||
.tbg
|
||||
width: 150px
|
||||
.img-flex
|
||||
display: flex
|
||||
.img-ui
|
||||
width: 240px
|
||||
height: 240px
|
||||
margin-right: 20px
|
||||
& img
|
||||
width: 100%
|
||||
height: 100%
|
||||
</style>
|
||||
|
|
@ -0,0 +1,278 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
<el-table
|
||||
v-loading="listLoading"
|
||||
ref="multipleTable"
|
||||
:data="varList"
|
||||
:row-key="getRowKey"
|
||||
:header-cell-style="{
|
||||
'font-weight': 'bold',
|
||||
'color': '#000'
|
||||
}"
|
||||
tooltip-effect="dark"
|
||||
border
|
||||
fit
|
||||
highlight-current-row
|
||||
>
|
||||
<el-table-column
|
||||
:reserve-selection="true"
|
||||
type="selection"
|
||||
width="55"
|
||||
align="center"/>
|
||||
<el-table-column type="index" label="序号" width="50" align="center" />
|
||||
<el-table-column prop="HIDDENDESCR" label="隐患描述" align="center" />
|
||||
<el-table-column label="隐患状态" align="center" >
|
||||
<template slot-scope="{row}">
|
||||
{{ translateHidden(row.HIDDEN_STATUS) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" width="300">
|
||||
<template slot-scope="{row}">
|
||||
<el-button icon="el-icon-view" size="mini" @click="goDetail(row)">查看</el-button>
|
||||
<el-button v-if="row.INSPECTED_SITEUSER_ID === USER_ID && (row.HIDDEN_STATUS === '101' || row.HIDDEN_STATUS === '16')" type="primary" icon="el-icon-edit" size="mini" @click="goAssign(row, '-2')">指派</el-button>
|
||||
<el-button v-if="row.CREATOR === USER_ID &&( row.HIDDEN_STATUS === '4' || row.HIDDEN_STATUS === '8') && (!row.FINAL_CHECK || row.FINAL_CHECK === '2')" type="primary" icon="el-icon-edit" size="mini" @click="goAccept(row)">验收</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div class="page-btn-group">
|
||||
<div/>
|
||||
<pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList" />
|
||||
</div>
|
||||
<div class="ui-height" />
|
||||
<div class="ui-foot">
|
||||
<el-button plain type="info" @click="goBack">返 回</el-button>
|
||||
</div>
|
||||
|
||||
<information ref="information"/>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import Pagination from '@/components/Pagination' // 通过 el-pagination二次打包
|
||||
import { requestFN } from '@/utils/request'
|
||||
import waves from '@/directive/waves' // waves directive
|
||||
import information from '../../../hiddenUtil/information'
|
||||
export default {
|
||||
components: { Pagination, information },
|
||||
directives: { waves },
|
||||
data() {
|
||||
return {
|
||||
listLoading: true,
|
||||
add: false,
|
||||
del: false,
|
||||
edit: false,
|
||||
listQuery: {
|
||||
page: 1,
|
||||
limit: 20
|
||||
},
|
||||
total: 0,
|
||||
config: config,
|
||||
search: {
|
||||
INSPECTED_DEPARTMENT_NAME: '', // 被检查单位
|
||||
INSPECTION_DEPARTMENT_NAME: '', // 检查部门
|
||||
INSPECTION_ORIGINATOR_NAME: '', // 检查发起人
|
||||
INSPECTION_TYPE: '', // 检查类型
|
||||
HIDDEN_STATUS: '', // 隐患状态
|
||||
INSPECTION_STATUS: '3-7' // 检查状态
|
||||
},
|
||||
hiddenStatusList: [
|
||||
{ ID: '', NAME: '请选择' },
|
||||
{ ID: '101', NAME: '待指派确认人' },
|
||||
{ ID: '1', NAME: '待整改' },
|
||||
{ ID: '2', NAME: '待验收' },
|
||||
{ ID: '10', NAME: '验收打回' },
|
||||
{ ID: '4', NAME: '已验收' },
|
||||
{ ID: '-2', NAME: '已指派确认人' },
|
||||
{ ID: '8', NAME: '特殊处置通过' },
|
||||
{ ID: '16', NAME: '确认打回' }
|
||||
],
|
||||
inspectionStatusList: [
|
||||
{ ID: '3-7', NAME: '请选择' },
|
||||
{ ID: '3', NAME: '待指派' },
|
||||
{ ID: '4', NAME: '指派中' },
|
||||
{ ID: '5', NAME: '指派完成' },
|
||||
{ ID: '6', NAME: '待验收' },
|
||||
{ ID: '7', NAME: '已验收' }
|
||||
],
|
||||
inspectionTypeList: [],
|
||||
varList: [],
|
||||
multipleSelectionAll: [], // 所有选中的数据包含跨页数据
|
||||
multipleSelection: [], // 当前页选中的数据
|
||||
USER_ID: JSON.parse(sessionStorage.getItem('user')).USER_ID
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getDict()
|
||||
this.getList()
|
||||
},
|
||||
methods: {
|
||||
getRowKey(row) {
|
||||
return row.HIDDEN_ID
|
||||
},
|
||||
translateHidden(id) {
|
||||
for (var i = 0; i < this.hiddenStatusList.length; i++) {
|
||||
if (this.hiddenStatusList[i].ID == id) return this.hiddenStatusList[i].NAME
|
||||
}
|
||||
},
|
||||
translateInspection(id) {
|
||||
for (var i = 0; i < this.inspectionStatusList.length; i++) {
|
||||
if (this.inspectionStatusList[i].ID == id) return this.inspectionStatusList[i].NAME
|
||||
}
|
||||
},
|
||||
// 搜索
|
||||
getQuery() {
|
||||
this.$refs.multipleTable.clearSelection()
|
||||
this.getList()
|
||||
},
|
||||
goKeyReset() {
|
||||
this.resetSearch()
|
||||
this.getQuery()
|
||||
},
|
||||
// 获取列表
|
||||
getList() {
|
||||
this.listLoading = true
|
||||
requestFN(
|
||||
'/hidden/listForAhZp?showCount=' + this.listQuery.limit + '¤tPage=' + this.listQuery.page,
|
||||
{
|
||||
...this.search,
|
||||
INSPECTION_ID: this.$parent.INSPECTION_ID
|
||||
}
|
||||
).then((data) => {
|
||||
this.listLoading = false
|
||||
this.varList = data.varList
|
||||
this.total = data.page.totalResult
|
||||
this.hasButton()
|
||||
this.pd = data.pd
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
},
|
||||
// 查看
|
||||
goDetail(row) {
|
||||
this.$refs.information.init(row.HIDDEN_ID)
|
||||
},
|
||||
goAssign(row, STATE) {
|
||||
this.$parent.INSPECTION_ID = row.INSPECTION_ID
|
||||
this.$parent.HIDDEN_ID = row.HIDDEN_ID
|
||||
this.$parent.HIDDEN_STATUS = STATE
|
||||
this.$parent.activeName = 'Assign'
|
||||
},
|
||||
goAccept(row) {
|
||||
this.$parent.INSPECTION_ID = row.INSPECTION_ID
|
||||
this.$parent.HIDDEN_ID = row.HIDDEN_ID
|
||||
this.$parent.activeName = 'Accept'
|
||||
},
|
||||
handleDelete(id) {
|
||||
this.$confirm('确定要删除吗?', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.listLoading = true
|
||||
requestFN(
|
||||
'/safetyenvironmental/delete',
|
||||
{
|
||||
INSPECTION_ID: id
|
||||
}
|
||||
).then(() => {
|
||||
this.$message({
|
||||
message: '删除成功',
|
||||
type: 'success'
|
||||
})
|
||||
this.listLoading = false
|
||||
this.varList = []
|
||||
this.listQuery.page = 1
|
||||
this.getList()
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
}).catch(() => {
|
||||
})
|
||||
},
|
||||
|
||||
batchDel() {
|
||||
const _selectData = this.$refs.multipleTable.selection
|
||||
if (_selectData == null || _selectData.length == 0) {
|
||||
this.$message({
|
||||
message: '请选中要删除的项...',
|
||||
type: 'error'
|
||||
})
|
||||
return false
|
||||
}
|
||||
const ids = _selectData.map((item, index) => {
|
||||
return item.INSPECTION_ID
|
||||
}).join(',')
|
||||
|
||||
this.$confirm('确定要删除选中的数据吗?', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.listLoading = true
|
||||
requestFN(
|
||||
'/safetyenvironmental/deleteAll',
|
||||
{
|
||||
DATA_IDS: ids
|
||||
}
|
||||
).then(() => {
|
||||
this.$message({
|
||||
message: '删除成功',
|
||||
type: 'success'
|
||||
})
|
||||
this.listLoading = false
|
||||
this.varList = []
|
||||
this.listQuery.page = 1
|
||||
this.$refs.multipleTable.clearSelection()
|
||||
this.getList()
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
}).catch(() => {
|
||||
})
|
||||
},
|
||||
// 判断按钮权限,用于是否显示按钮
|
||||
hasButton: function() {
|
||||
var keys = 'safetyenvironmental:add,safetyenvironmental:del,safetyenvironmental:edit,toExcel'
|
||||
requestFN(
|
||||
'/head/hasButton',
|
||||
{
|
||||
keys: keys
|
||||
}
|
||||
).then((data) => {
|
||||
this.add = data.safetyenvironmentalfhadminadd // 新增权限
|
||||
this.del = data.safetyenvironmentalfhadmindel // 删除权限
|
||||
this.edit = data.safetyenvironmentalfhadminedit // 修改权限
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
},
|
||||
// 获取数据字典数据
|
||||
getDict: function() {
|
||||
requestFN(
|
||||
'/dictionaries/getLevels',
|
||||
{
|
||||
DICTIONARIES_ID: '60e6481d96e44a5390ff5c347c4d1ffe' // 检查类型
|
||||
}
|
||||
).then((data) => {
|
||||
this.inspectionTypeList = data.list
|
||||
}).catch((e) => {
|
||||
|
||||
})
|
||||
},
|
||||
resetSearch() {
|
||||
this.search = {
|
||||
INSPECTED_DEPARTMENT_NAME: '', // 被检查单位
|
||||
INSPECTION_DEPARTMENT_NAME: '', // 检查部门
|
||||
INSPECTION_ORIGINATOR_NAME: '', // 检查发起人
|
||||
INSPECTION_TYPE: '', // 检查类型
|
||||
HIDDEN_STATUS: '', // 隐患状态
|
||||
INSPECTION_STATUS: '' // 检查状态
|
||||
}
|
||||
},
|
||||
goBack() {
|
||||
this.$parent.INSPECTION_ID = ''
|
||||
this.$parent.activeName = 'List'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
|
|
@ -0,0 +1,361 @@
|
|||
<template>
|
||||
<div>
|
||||
<div class="app-container">
|
||||
<div id="printContent" class="dialogContent mb-20">
|
||||
<div class="no-print">
|
||||
<div class="level-title">
|
||||
<h1>秦港股份有限公司现场{{ pd.INSPECTION_SUBJECT }}检查记录</h1>
|
||||
</div>
|
||||
</div>
|
||||
<h3 class="no-show" style="text-align: center">秦港股份有限公司现场{{ pd.INSPECTION_SUBJECT }}检查记录</h3>
|
||||
<div class="mb-20">
|
||||
<table class="table-ui">
|
||||
<tr>
|
||||
<td class="tbg" width="12%">被检查单位</td>
|
||||
<td width="30%">{{ pd.INSPECTED_DEPARTMENT_NAMES }}</td>
|
||||
<td class="tbg" width="15%">被检查单位现场负责人</td>
|
||||
<td width="40%">{{ pd.INSPECTED_SITEUSER_NAME }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<!-- <td class="tbg" width="12%">被检查单位</td>-->
|
||||
<!-- <td width="38%">{{ pd.INSPECTED_DEPARTMENT_NAMES }}</td>-->
|
||||
<!-- <td class="tbg" width="15%">被检查单位现场负责人</td>-->
|
||||
<!-- <td width="35%">{{ pd.INSPECTED_SITEUSER_NAME }}</td>-->
|
||||
<td class="tbg">检查场所</td>
|
||||
<td colspan="3">{{ pd.INSPECTION_PLACE }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<!-- <td class="tbg">检查部门</td>-->
|
||||
<!-- <td>{{ pd.INSPECTION_LEADDEPARTMENT_NAME }}</td>-->
|
||||
<!-- <td class="tbg">检查类型</td>-->
|
||||
<!-- <td>{{ pd.INSPECTION_TYPE_NAME }}</td>-->
|
||||
<td class="tbg">牵头检查部门</td>
|
||||
<td>{{ pd.INSPECTION_LEADDEPARTMENT_NAME }}</td>
|
||||
<td class="tbg">检查人员</td>
|
||||
<td>{{ pd.INSPECTION_USER_NAME }}</td>
|
||||
</tr>
|
||||
<!-- <tr>-->
|
||||
<!-- <td class="tbg">检查场所</td>-->
|
||||
<!-- <td colspan="3">{{ pd.INSPECTION_PLACE }}</td>-->
|
||||
<!-- </tr>-->
|
||||
<tr>
|
||||
<!-- <td class="tbg">检查时间</td>-->
|
||||
<!-- <td colspan="3">{{ formatTime(pd.INSPECTION_TIME_START) }} 至 {{ formatTime(pd.INSPECTION_TIME_END) }}</td>-->
|
||||
<td class="tbg">检查类型</td>
|
||||
<td>{{ pd.INSPECTION_TYPE_NAME }}</td>
|
||||
<td class="tbg">检查时间</td>
|
||||
<td>{{ formatTime(pd.INSPECTION_TIME_START) }} 至 {{ formatTime(pd.INSPECTION_TIME_END) }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">记录填写时间</td>
|
||||
<td colspan="3">{{ pd.CREATTIME }}</td>
|
||||
</tr>
|
||||
|
||||
<tr v-if="pd.situationList">
|
||||
<td colspan="4" style="padding: 0;">
|
||||
<table class="table-vi">
|
||||
<tr>
|
||||
<th>检查情况</th>
|
||||
</tr>
|
||||
<tr v-for="(item,index) in pd.situationList" :key="'situation'+index">
|
||||
<td>{{ index + 1 }}. {{ item.SITUATION }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr v-if="pd.hiddenList">
|
||||
<td colspan="4" style="padding: 0;">
|
||||
<table class="table-vi">
|
||||
<tr>
|
||||
<th colspan="5">发现问题</th>
|
||||
</tr>
|
||||
<tbody v-for="(item) in pd.hiddenList" :key="item.HIDDEN_ID" class="no-print">
|
||||
<tr>
|
||||
<td class="tbg">隐患描述</td>
|
||||
<td>{{ item.HIDDENDESCR }}</td>
|
||||
<td class="tbg">隐患部位</td>
|
||||
<td>{{ item.HIDDENPART_NAME?item.HIDDENPART_NAME:item.HIDDENPART }}</td>
|
||||
<td width="300">
|
||||
<el-button icon="el-icon-view" size="mini" @click="goView(item.HIDDEN_ID)">查看</el-button>
|
||||
<el-button type="success" icon="el-icon-view" size="mini" @click="checkFlow(item)">流程图</el-button>
|
||||
<el-button v-if="( pd.INSPECTION_STATUS == '0' && isDeleteDisplay) || ( isDeleteDisplay && pd.INSPECTION_STATUS =='2' )" type="danger" icon="el-icon-view" size="mini" @click="goDelete(item)">删除</el-button>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tr v-for="(item,index) in pd.hiddenList" :key="'hidden'+index" class="no-tr-show">
|
||||
<td>{{ index + 1 }}. {{ item.HIDDENDESCR }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="no-print">
|
||||
<div v-if="pd.inspectorList && pd.inspectorList.length > 0" class="level-title">
|
||||
<h1>检查人员核实情况</h1>
|
||||
</div>
|
||||
<div v-if="pd.inspectorList && pd.inspectorList.length > 0" class="mb-20">
|
||||
<table class="table-ui">
|
||||
<tr>
|
||||
<th>序号</th>
|
||||
<th>核实人员</th>
|
||||
<th>核实时间</th>
|
||||
<th>核实意见</th>
|
||||
<th>签字</th>
|
||||
</tr>
|
||||
<tr v-for="(item, index) in pd.inspectorList" :key="'inspector'+index">
|
||||
<td>{{ index+1 }}</td>
|
||||
<td>{{ item.INSPECTION_USER_NAME }}</td>
|
||||
<td>{{ item.INSPECTION_USER_SIGN_TIME }}</td>
|
||||
<td>{{ item.INSPECTION_USER_OPINION }}</td>
|
||||
<td>
|
||||
<el-image
|
||||
:src="config.fileUrl + item.INSPECTION_USER_SIGN_IMG"
|
||||
:preview-src-list="new Array(config.fileUrl + item.INSPECTION_USER_SIGN_IMG)"
|
||||
style="width: 100px; height: 100px"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="no-show">
|
||||
<div style="display: flex">
|
||||
<p>检查人员(签名):</p>
|
||||
<div v-if="pd.inspectorList && pd.inspectorList.length > 0" class="mb-20">
|
||||
<el-image
|
||||
v-for="(item, index) in pd.inspectorList"
|
||||
:key="'inspector'+index"
|
||||
:src="config.fileUrl + item.INSPECTION_USER_SIGN_IMG"
|
||||
:preview-src-list="new Array(config.fileUrl + item.INSPECTION_USER_SIGN_IMG)"
|
||||
style="width: 100px; height: 100px;margin-left: 20px"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="no-print">
|
||||
<div v-if="pd.INSPECTED_SITEUSER_SIGN_TIME" class="level-title">
|
||||
<h1>被检查单位负责人确认情况</h1>
|
||||
</div>
|
||||
<div v-if="pd.INSPECTED_SITEUSER_SIGN_TIME" class="mb-20">
|
||||
<table class="table-ui">
|
||||
<tr>
|
||||
<td class="tbg" style="width: 200px;">被检查单位负责人(签字):</td>
|
||||
<td>
|
||||
<el-image
|
||||
:src="config.fileUrl + pd.INSPECTED_SITEUSER_SIGN_IMG"
|
||||
:preview-src-list="new Array(config.fileUrl + pd.INSPECTED_SITEUSER_SIGN_IMG)"
|
||||
style="width: 100px; height: 100px"/>
|
||||
</td>
|
||||
<!--<td class="tbg">确认时间:</td>-->
|
||||
<!--<td>{{ pd.INSPECTED_SITEUSER_SIGN_TIME }}</td>-->
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="no-show">
|
||||
<div style="display: flex;align-items: center">
|
||||
<p>被检查单位负责人(签名):</p>
|
||||
<div style="display: flex;align-items: center">
|
||||
<div>
|
||||
<el-image
|
||||
:src="config.fileUrl + pd.INSPECTED_SITEUSER_SIGN_IMG"
|
||||
:preview-src-list="new Array(config.fileUrl + pd.INSPECTED_SITEUSER_SIGN_IMG)"
|
||||
style="width: 100px; height: 100px"/>
|
||||
</div>
|
||||
<span>{{ pd.INSPECTED_SITEUSER_SIGN_TIME }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<el-dialog :visible.sync="dialogMap" :title="'隐患位置'" width="80%">
|
||||
<div>
|
||||
<iframe id="iframe" ref="iframe" :src="iframeSrc" frameborder="0" allowtransparency="true" width="100%" height="600"/>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<video id="videoPlayer" controls="controls" crossOrigin="anonymous" style="display: none">
|
||||
<source id="videoSource" src="" type="video/mp4">
|
||||
</video>
|
||||
<canvas id="canvasVideo" style="display: none"/>
|
||||
|
||||
<div class="ui-height" />
|
||||
<div class="ui-foot">
|
||||
<el-button v-print="'#printContent'" type="primary" icon="el-icon-printer" size="mini">打印</el-button>
|
||||
<el-button plain type="info" @click="goBack">返 回</el-button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<information ref="information"/>
|
||||
<flowChart ref="flowChart"/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { requestFN } from '@/utils/request'
|
||||
import dateformat from '@/utils/dateformat'
|
||||
import information from '../../../hiddenUtil/information'
|
||||
import flowChart from '../../../hiddenUtil/flowChart'
|
||||
|
||||
export default {
|
||||
components: { information, flowChart },
|
||||
data() {
|
||||
return {
|
||||
listLoading: true,
|
||||
config: config,
|
||||
iframeSrc: '',
|
||||
dialogMap: false,
|
||||
pd: {
|
||||
INSPECTION_SOURCE: '5', // 检查来源(4-监管端 5-企业端)
|
||||
inspectorList: [], // 检查人员
|
||||
INSPECTION_ORIGINATOR_NAME: '', // 检查发起人
|
||||
INSPECTED_DEPARTMENT_NAME: '', // 被检查单位
|
||||
INSPECTED_SITEUSER_NAME: '', // 被检查单位现场负责人
|
||||
INSPECTED_EXPLAIN: '', // 申辩内容
|
||||
INSPECTED_SITEUSER_SIGN_IMG: '', // 被检查单位现场负责人签字
|
||||
INSPECTED_SITEUSER_SIGN_TIME: '', // 被检查单位现场负责人签字时间
|
||||
INSPECTION_TYPE_NAME: '', // 检查类型
|
||||
INSPECTION_PLACE: '', // 检查场所
|
||||
INSPECTION_TIME_START: '', // 检查开始时间
|
||||
INSPECTION_TIME_END: '', // 检查结束时间
|
||||
INSPECTION_STATUS: '', // 状态(0.暂存 1.检查人待确认、2.被检查人待确认、3.归档 -1.检查人异议打回 -2被检查人申辩)
|
||||
CREATTIME: '',
|
||||
situationList: [''], // 检查情况
|
||||
hiddenList: [], // 隐患信息集合,
|
||||
INSPECTION_USER_ID: '' // 检查人ID数组
|
||||
},
|
||||
isDeleteDisplay: false,
|
||||
loginUserId: JSON.parse(sessionStorage.getItem('user')).USER_ID
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.iframeSrc = this.config.weburl + 'static/mapshow.html?t=' + Math.random()
|
||||
},
|
||||
async mounted() {
|
||||
// await this.getData()
|
||||
},
|
||||
methods: {
|
||||
formatTime(date, column) {
|
||||
if (date) {
|
||||
return dateformat(date, 'YYYY年MM月DD日HH时mm分')
|
||||
} else {
|
||||
return ''
|
||||
}
|
||||
},
|
||||
getData() {
|
||||
return new Promise((resolve) => {
|
||||
requestFN(
|
||||
'/safetyenvironmental/goShow',
|
||||
{
|
||||
INSPECTION_ID: this.$parent.INSPECTION_ID
|
||||
}
|
||||
).then((data) => {
|
||||
this.pd = Object.assign({}, data.pd) // copy obj
|
||||
this.pd.hiddenList.forEach(item => {
|
||||
if (item.hiddenVideos.length > 0) {
|
||||
this.$set(item.hiddenVideos[0], 'IMGFILEPATH', this.findvideocover(item.hiddenVideos[0]))
|
||||
}
|
||||
})
|
||||
// 判断登录人是否为检查人员,并判断是否能删除
|
||||
if (this.pd.INSPECTION_USER_ID != null && this.pd.INSPECTION_USER_ID != '') {
|
||||
this.pd.INSPECTION_USER_ID.split(',').forEach(item => {
|
||||
if (item == this.loginUserId) {
|
||||
this.isDeleteDisplay = true
|
||||
}
|
||||
})
|
||||
}
|
||||
this.listLoading = false
|
||||
console.info(this.pd)
|
||||
resolve()
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
})
|
||||
},
|
||||
findvideocover(item) {
|
||||
const source = document.getElementById('videoSource') // 获取视频对象
|
||||
source.src = this.config.fileUrl + item.FILEPATH
|
||||
const video = document.getElementById('videoPlayer')
|
||||
video.currentTime = 1 // 第一帧
|
||||
video.load()
|
||||
var canvas = document.getElementById('canvasVideo') // 获取 canvas 对象
|
||||
video.oncanplay = () => {
|
||||
// 利用canvas对象方法绘图
|
||||
canvas.getContext('2d').drawImage(video, 0, 0, video.clientWidth, video.clientHeight)
|
||||
// 转换成base64形式
|
||||
item.IMGFILEPATH = canvas.toDataURL('image/png') // 截取后的视频封面
|
||||
}
|
||||
},
|
||||
goView(id) {
|
||||
this.$refs.information.init(id)
|
||||
},
|
||||
closePlay() {
|
||||
this.$refs.hdVideoPlayer.player.pause()
|
||||
},
|
||||
showMap(obj) {
|
||||
this.dialogMap = true
|
||||
this.iframeSrc = this.config.weburl + 'static/mapshow.html?t=' + Math.random()
|
||||
this.$nextTick(() => {
|
||||
const iframe = document.querySelector('#iframe')
|
||||
// 处理兼容行问题
|
||||
if (iframe.attachEvent) {
|
||||
iframe.attachEvent('onload', function() {
|
||||
this.contentWindow.postMessage(
|
||||
{
|
||||
'name': obj.HIDDENDESCR,
|
||||
'longitude': Number(obj.LONGITUDE),
|
||||
'latitude': Number(obj.LATITUDE)
|
||||
}, '*')
|
||||
})
|
||||
} else {
|
||||
iframe.onload = function() {
|
||||
this.contentWindow.postMessage(
|
||||
{
|
||||
'name': obj.HIDDENDESCR,
|
||||
'longitude': Number(obj.LONGITUDE),
|
||||
'latitude': Number(obj.LATITUDE)
|
||||
}, '*')
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
checkFlow(item) {
|
||||
this.$refs.flowChart.init(item)
|
||||
},
|
||||
goDelete(item) {
|
||||
this.$confirm('确定要删除此隐患吗?', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
requestFN(
|
||||
'/hiddenApi/deleteHiddenForSafetyenvironmental',
|
||||
{
|
||||
HIDDEN_ID: item.HIDDEN_ID,
|
||||
tm: new Date().getTime()
|
||||
}
|
||||
).then((res) => {
|
||||
if (res.result === 'success') {
|
||||
this.$message({
|
||||
message: '删除成功',
|
||||
type: 'success'
|
||||
})
|
||||
} else {
|
||||
this.$message({
|
||||
message: res.codeMsg,
|
||||
type: 'error'
|
||||
})
|
||||
}
|
||||
this.getData()
|
||||
}).catch((e) => {})
|
||||
}).catch(() => {})
|
||||
},
|
||||
goBack() {
|
||||
this.$parent.INSPECTION_ID = ''
|
||||
this.$parent.activeName = 'List'
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
</style>
|
||||
|
|
@ -0,0 +1,360 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
<el-form label-width="100px">
|
||||
<el-row>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="被检查单位">
|
||||
<el-input v-model="search.INSPECTED_DEPARTMENT_NAME" placeholder="被检查单位..." />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="检查部门">
|
||||
<el-input v-model="search.INSPECTION_DEPARTMENT_NAME" placeholder="检查部门..." />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="检查发起人">
|
||||
<el-input v-model="search.INSPECTION_ORIGINATOR_NAME" placeholder="检查发起人..." />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="检查类型">
|
||||
<SelectTree
|
||||
ref="tree_InspectionType"
|
||||
:clearable="false"
|
||||
:options="inspectionTypeList"
|
||||
:props="defaultProps"
|
||||
v-model="search.INSPECTION_TYPE"
|
||||
:canparent="false"
|
||||
placeholder="这里选择检查类型..."
|
||||
children-name="nodes" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="检查时间">
|
||||
<el-date-picker
|
||||
v-model="search.INSPECTION_TIME"
|
||||
style="width: 100%;"
|
||||
type="daterange"
|
||||
value-format="yyyy-MM-dd"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="隐患处理状态">
|
||||
<el-select v-model="search.INSPECTION_STATUS" placeholder="隐患处理状态..." clearable style="width: 100%">
|
||||
<el-option v-for="item in inspectionStatusList" :key="item.ID" :label="item.NAME" :value="item.ID" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="检查题目">
|
||||
<el-select v-model="search.INSPECTION_SUBJECT" placeholder="检查题目" clearable style="width: 100%">
|
||||
<el-option v-for="item in INSPECTION_SUBJECT_LIST" :key="item.ID" :label="item.NAME" :value="item.ID" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label-width="10px">
|
||||
<el-button v-waves type="primary" icon="el-icon-search" @click="getQuery">
|
||||
搜索
|
||||
</el-button>
|
||||
<el-button v-waves type="success" icon="el-icon-refresh" @click="goKeyReset">
|
||||
重置
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<el-table
|
||||
v-loading="listLoading"
|
||||
ref="multipleTable"
|
||||
:data="varList"
|
||||
:row-key="getRowKey"
|
||||
:header-cell-style="{
|
||||
'font-weight': 'bold',
|
||||
'color': '#000'
|
||||
}"
|
||||
tooltip-effect="dark"
|
||||
border
|
||||
fit
|
||||
highlight-current-row
|
||||
>
|
||||
<el-table-column
|
||||
:reserve-selection="true"
|
||||
type="selection"
|
||||
width="55"
|
||||
align="center"/>
|
||||
<el-table-column type="index" label="序号" width="50" align="center" fixed="left" />
|
||||
<el-table-column prop="INSPECTED_DEPARTMENT_NAME" show-overflow-tooltip label="被检查单位" align="center" width="150" />
|
||||
<el-table-column prop="INSPECTION_DEPARTMENT_NAME" show-overflow-tooltip label="检查部门" align="center" width="150" />
|
||||
<el-table-column prop="INSPECTION_ORIGINATOR_NAME" show-overflow-tooltip label="检查发起人" align="center" />
|
||||
<!-- <el-table-column prop="INSPECTED_SITEUSER_NAME" label="被检查单位现场负责人" align="center" />-->
|
||||
<el-table-column prop="INSPECTION_TYPE_NAME" show-overflow-tooltip label="检查类型" align="center" />
|
||||
<!-- <el-table-column prop="INSPECTION_PLACE" label="检查场所" />-->
|
||||
<el-table-column label="检查时间" width="280" align="center" >
|
||||
<template slot-scope="{row}">
|
||||
<span>自 {{ row.INSPECTION_TIME_START }} 至 {{ row.INSPECTION_TIME_END }} 止</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="INSPECTION_STATUS" show-overflow-tooltip label="状态" align="center" width="150" >
|
||||
<template slot-scope="{row}">
|
||||
{{ translateInspection(row.INSPECTION_STATUS) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="INSPECTION_SUBJECT" show-overflow-tooltip label="检查题目" align="center" width="200"/>
|
||||
<el-table-column label="操作" align="center" width="200" fixed="right">
|
||||
<template slot-scope="{row}">
|
||||
<el-button icon="el-icon-view" size="mini" @click="goDetail(row)">查看</el-button>
|
||||
<el-button
|
||||
v-if="(row.INSPECTION_STATUS === '3' || row.INSPECTION_STATUS === '4') && row.INSPECTED_SITEUSER_ID.includes(USER_ID)"
|
||||
type="primary"
|
||||
icon="el-icon-view"
|
||||
size="mini"
|
||||
@click="goAssign(row)">指派</el-button>
|
||||
<el-button v-if="(row.INSPECTION_STATUS === '6' || row.INSPECTION_STATUS === '5'||row.INSPECTION_STATUS === '7') && row.checkout === 1" type="success" icon="el-icon-view" size="mini" @click="goAccept(row)">验收</el-button>
|
||||
<!-- <el-button v-if="row.INSPECTION_STATUS === '3'" type="success" icon="el-icon-view" size="mini" @click="goAccept(row)">验收</el-button>-->
|
||||
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div class="page-btn-group">
|
||||
<div/>
|
||||
<pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList" />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import Pagination from '@/components/Pagination' // 通过 el-pagination二次打包
|
||||
import { requestFN } from '@/utils/request'
|
||||
import waves from '@/directive/waves' // waves directive
|
||||
import SelectTree from '@/components/SelectTree'
|
||||
import { archiveList } from '../Mock'
|
||||
|
||||
export default {
|
||||
components: { Pagination, SelectTree },
|
||||
directives: { waves },
|
||||
data() {
|
||||
return {
|
||||
listLoading: true,
|
||||
add: false,
|
||||
del: false,
|
||||
edit: false,
|
||||
listQuery: {
|
||||
page: 1,
|
||||
limit: 20
|
||||
},
|
||||
total: 0,
|
||||
config: config,
|
||||
KEYWORDS: '',
|
||||
search: {
|
||||
INSPECTED_DEPARTMENT_NAME: '', // 被检查单位
|
||||
INSPECTION_DEPARTMENT_NAME: '', // 检查部门
|
||||
INSPECTION_ORIGINATOR_NAME: '', // 检查发起人
|
||||
INSPECTION_TYPE: '', // 检查类型
|
||||
INSPECTION_SUBJECT: '', // 检查题目
|
||||
INSPECTION_TIME: ['', ''], // 检查时间
|
||||
INSPECTION_STATUS: '' // 检查状态
|
||||
},
|
||||
inspectionTypeList: [],
|
||||
inspectionStatusList: [
|
||||
{ ID: '3', NAME: '待指派' },
|
||||
{ ID: '4', NAME: '指派中' },
|
||||
{ ID: '5', NAME: '指派完成' },
|
||||
{ ID: '6', NAME: '检查待验收' },
|
||||
{ ID: '7', NAME: '检查已验收' },
|
||||
{ ID: '8', NAME: '已归档' }
|
||||
],
|
||||
INSPECTION_SUBJECT_LIST: [
|
||||
{ ID: '安全', NAME: '安全' },
|
||||
{ ID: '环保', NAME: '环保' },
|
||||
{ ID: '综合', NAME: '综合' }
|
||||
],
|
||||
varList: [],
|
||||
multipleSelectionAll: [], // 所有选中的数据包含跨页数据
|
||||
multipleSelection: [], // 当前页选中的数据
|
||||
USER_ID: JSON.parse(sessionStorage.getItem('user')).USER_ID,
|
||||
defaultProps: { value: 'id', children: 'nodes', label: 'name' }
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getDict()
|
||||
this.getList(this.ROLE_ID)
|
||||
},
|
||||
methods: {
|
||||
getRowKey(row) {
|
||||
return row.INSPECTION_ID
|
||||
},
|
||||
translateInspection(id) {
|
||||
for (var i = 0; i < this.inspectionStatusList.length; i++) {
|
||||
if (this.inspectionStatusList[i].ID == id) return this.inspectionStatusList[i].NAME
|
||||
}
|
||||
},
|
||||
// 搜索
|
||||
getQuery() {
|
||||
this.$refs.multipleTable.clearSelection()
|
||||
this.getList()
|
||||
},
|
||||
goKeyReset() {
|
||||
this.resetSearch()
|
||||
this.getQuery()
|
||||
},
|
||||
// 获取列表
|
||||
getList() {
|
||||
this.listLoading = true
|
||||
// requestFN(
|
||||
// '/safetyenvironmental/checkList?showCount=' + this.listQuery.limit + '¤tPage=' + this.listQuery.page,
|
||||
// {
|
||||
// ...this.search,
|
||||
// ARCHIVE_USER_ID: JSON.parse(sessionStorage.getItem('user')).USER_ID,
|
||||
// INSPECTION_TIME_START: this.search.INSPECTION_TIME[0],
|
||||
// INSPECTION_TIME_END: this.search.INSPECTION_TIME[1]
|
||||
// }
|
||||
// ).then((data) => {
|
||||
// this.listLoading = false
|
||||
// this.varList = data.varList
|
||||
// this.total = data.page.totalResult
|
||||
// this.hasButton()
|
||||
// this.pd = data.pd
|
||||
// }).catch((e) => {
|
||||
// this.listLoading = false
|
||||
// })
|
||||
|
||||
setTimeout(() => {
|
||||
this.listLoading = false
|
||||
this.varList = archiveList
|
||||
this.total = archiveList.length
|
||||
}, 400)
|
||||
},
|
||||
// 查看
|
||||
goDetail(row) {
|
||||
this.$parent.activeName = 'Info'
|
||||
this.$parent.INSPECTION_ID = row.INSPECTION_ID
|
||||
},
|
||||
goAssign(row) {
|
||||
this.$parent.activeName = 'HiddenList'
|
||||
// 是否可以指派
|
||||
this.$parent.assign = row.INSPECTED_SITEUSER_ID.includes(this.USER_ID) ? '0' : '1'
|
||||
this.$parent.INSPECTION_ID = row.INSPECTION_ID
|
||||
},
|
||||
goAccept(row) {
|
||||
this.$parent.activeName = 'HiddenList'
|
||||
this.$parent.INSPECTION_ID = row.INSPECTION_ID
|
||||
},
|
||||
|
||||
handleDelete(id) {
|
||||
this.$confirm('确定要删除吗?', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.listLoading = true
|
||||
requestFN(
|
||||
'/safetyenvironmental/delete',
|
||||
{
|
||||
INSPECTION_ID: id
|
||||
}
|
||||
).then(() => {
|
||||
this.$message({
|
||||
message: '删除成功',
|
||||
type: 'success'
|
||||
})
|
||||
this.listLoading = false
|
||||
this.varList = []
|
||||
this.listQuery.page = 1
|
||||
this.getList()
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
}).catch(() => {
|
||||
})
|
||||
},
|
||||
|
||||
batchDel() {
|
||||
const _selectData = this.$refs.multipleTable.selection
|
||||
if (_selectData == null || _selectData.length == 0) {
|
||||
this.$message({
|
||||
message: '请选中要删除的项...',
|
||||
type: 'error'
|
||||
})
|
||||
return false
|
||||
}
|
||||
const ids = _selectData.map((item, index) => {
|
||||
return item.INSPECTION_ID
|
||||
}).join(',')
|
||||
|
||||
this.$confirm('确定要删除选中的数据吗?', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.listLoading = true
|
||||
requestFN(
|
||||
'/safetyenvironmental/deleteAll',
|
||||
{
|
||||
DATA_IDS: ids
|
||||
}
|
||||
).then(() => {
|
||||
this.$message({
|
||||
message: '删除成功',
|
||||
type: 'success'
|
||||
})
|
||||
this.listLoading = false
|
||||
this.varList = []
|
||||
this.listQuery.page = 1
|
||||
this.$refs.multipleTable.clearSelection()
|
||||
this.getList()
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
}).catch(() => {
|
||||
})
|
||||
},
|
||||
// 判断按钮权限,用于是否显示按钮
|
||||
hasButton: function() {
|
||||
var keys = 'safetyenvironmental:add,safetyenvironmental:del,safetyenvironmental:edit,toExcel'
|
||||
requestFN(
|
||||
'/head/hasButton',
|
||||
{
|
||||
keys: keys
|
||||
}
|
||||
).then((data) => {
|
||||
this.add = data.safetyenvironmentalfhadminadd // 新增权限
|
||||
this.del = data.safetyenvironmentalfhadmindel // 删除权限
|
||||
this.edit = data.safetyenvironmentalfhadminedit // 修改权限
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
},
|
||||
// 获取数据字典数据
|
||||
getDict: function() {
|
||||
requestFN(
|
||||
'/dictionaries/listSelectTree',
|
||||
{
|
||||
DICTIONARIES_ID: '60e6481d96e44a5390ff5c347c4d1ffe' // 检查类型
|
||||
}
|
||||
).then((data) => {
|
||||
this.inspectionTypeList = JSON.parse(data.zTreeNodes)
|
||||
}).catch((e) => {
|
||||
|
||||
})
|
||||
},
|
||||
resetSearch() {
|
||||
this.search = {
|
||||
INSPECTED_DEPARTMENT_NAME: '', // 被检查单位
|
||||
INSPECTION_DEPARTMENT_NAME: '', // 检查部门
|
||||
INSPECTION_ORIGINATOR_NAME: '', // 检查发起人
|
||||
INSPECTION_TYPE: '', // 检查类型
|
||||
INSPECTION_TIME: ['', ''], // 检查时间
|
||||
INSPECTION_STATUS: '3-7' // 检查状态
|
||||
}
|
||||
this.$refs.tree_InspectionType.clearHandle()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
<template>
|
||||
<div>
|
||||
<List v-show="activeName==='List'" ref="list" />
|
||||
<Info v-if="activeName==='Info'" />
|
||||
<HiddenList v-if="activeName==='HiddenList'" />
|
||||
<Assign v-if="activeName==='Assign'" />
|
||||
<Accept v-if="activeName==='Accept'" />
|
||||
<Detail v-if="activeName==='Detail'" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import List from './components/list'
|
||||
import Info from './components/info'
|
||||
import HiddenList from './components/hiddenlist'
|
||||
import Assign from './components/assign'
|
||||
import Accept from './components/accept'
|
||||
import Detail from './components/detail'
|
||||
export default {
|
||||
components: {
|
||||
Detail,
|
||||
List,
|
||||
Info,
|
||||
HiddenList,
|
||||
Assign,
|
||||
Accept
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
activeName: 'List',
|
||||
INSPECTION_ID: '',
|
||||
HIDDEN_ID: '',
|
||||
HIDDEN_STATUS: ''
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
activeName(newValue, oldValue) {
|
||||
if (newValue == 'List') {
|
||||
this.$refs.list.getQuery()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
|
|
@ -0,0 +1,192 @@
|
|||
export const inspectedList = [
|
||||
{
|
||||
INSPECTED_DEPARTMENT_ID: '035958e685cf4850bc40151c5e0617a6',
|
||||
INSPECTION_TYPE_NAME: '月度安全检查',
|
||||
INSPECTION_TIME_START: '2023-12-30 00:00',
|
||||
INSPECTED_SITEUSER_ID: 'df57edb0fc1f48a59e2696f5fa4105c7',
|
||||
INSPECTED_DEPARTMENT_NAME: '秦港股份一公司',
|
||||
INSPECTED_SITEUSER_SIGN_IMG: '',
|
||||
INSPECTION_ORIGINATOR_NAME: '秦港股份一公司',
|
||||
INSPECTION_TIME_END: '2023-12-27 00:00',
|
||||
INSPECTION_SUBJECT: '环保',
|
||||
INSPECTED_EXPLAIN: '',
|
||||
INSPECTION_STATUS: '2',
|
||||
INSPECTION_ID: '34c2e205e1c648d192f64afb006763cc',
|
||||
INSPECTED_DEPARTMENT_NAMES: '秦港股份一公司',
|
||||
INSPECTED_SITEUSER_NAME: '秦港股份一公司',
|
||||
INSPECTION_DEPARTMENT_NAME: '秦港股份一公司',
|
||||
INSPECTION_USER_NAME: '测试账号,秦港股份一公司',
|
||||
INSPECTED_SITEUSER_SIGN_TIME: ''
|
||||
},
|
||||
{
|
||||
INSPECTED_DEPARTMENT_ID: 'ad19be6774f940179a758bd088f86cf8',
|
||||
INSPECTION_TYPE_NAME: '日检查',
|
||||
INSPECTION_TIME_START: '2023-11-23 19:10',
|
||||
INSPECTED_SITEUSER_ID: '98f191d6347a408482002420cde656be',
|
||||
INSPECTED_DEPARTMENT_NAME: '码头作业三班组',
|
||||
INSPECTED_SITEUSER_SIGN_IMG: '',
|
||||
INSPECTION_ORIGINATOR_NAME: '陈健',
|
||||
INSPECTION_TIME_END: '2023-11-23 19:45',
|
||||
INSPECTION_SUBJECT: '环保',
|
||||
INSPECTED_EXPLAIN: '',
|
||||
INSPECTION_STATUS: '2',
|
||||
INSPECTION_ID: '6e8015e94529405ea4a3aa37bdd1ecd2',
|
||||
INSPECTED_DEPARTMENT_NAMES: '码头作业部-码头作业三班组',
|
||||
INSPECTED_SITEUSER_NAME: '胡涛',
|
||||
INSPECTION_DEPARTMENT_NAME: '安全监督部岗位员工',
|
||||
INSPECTION_USER_NAME: '陈健',
|
||||
INSPECTED_SITEUSER_SIGN_TIME: ''
|
||||
},
|
||||
{
|
||||
INSPECTED_DEPARTMENT_ID: 'ad19be6774f940179a758bd088f86cf8',
|
||||
INSPECTION_TYPE_NAME: '日检查',
|
||||
INSPECTION_TIME_START: '2023-11-23 19:10',
|
||||
INSPECTED_SITEUSER_ID: '98f191d6347a408482002420cde656be',
|
||||
INSPECTED_DEPARTMENT_NAME: '码头作业三班组',
|
||||
INSPECTED_SITEUSER_SIGN_IMG: '',
|
||||
INSPECTION_ORIGINATOR_NAME: '陈健',
|
||||
INSPECTION_TIME_END: '2023-11-23 19:45',
|
||||
INSPECTION_SUBJECT: '安全',
|
||||
INSPECTED_EXPLAIN: '',
|
||||
INSPECTION_STATUS: '2',
|
||||
INSPECTION_ID: '193205a1d36c42b68e3db8e9b5ace6cd',
|
||||
INSPECTED_DEPARTMENT_NAMES: '码头作业部-码头作业三班组',
|
||||
INSPECTED_SITEUSER_NAME: '胡涛',
|
||||
INSPECTION_DEPARTMENT_NAME: '安全监督部岗位员工',
|
||||
INSPECTION_USER_NAME: '陈健',
|
||||
INSPECTED_SITEUSER_SIGN_TIME: ''
|
||||
},
|
||||
{
|
||||
INSPECTED_DEPARTMENT_ID: 'e4f473698d904f1e948de14892a8d98b',
|
||||
INSPECTION_TYPE_NAME: '日检查',
|
||||
INSPECTION_TIME_START: '2023-11-23 13:08',
|
||||
INSPECTED_SITEUSER_ID: '9a261c843f494e4a82d5e0b57b9e34d4',
|
||||
INSPECTED_DEPARTMENT_NAME: '码头作业四班组',
|
||||
INSPECTED_SITEUSER_SIGN_IMG: '',
|
||||
INSPECTION_ORIGINATOR_NAME: '修涛',
|
||||
INSPECTION_TIME_END: '2023-11-23 13:45',
|
||||
INSPECTION_SUBJECT: '安全',
|
||||
INSPECTED_EXPLAIN: '',
|
||||
INSPECTION_STATUS: '2',
|
||||
INSPECTION_ID: '242819b6b35145cea6269fac505ecb11',
|
||||
INSPECTED_DEPARTMENT_NAMES: '码头作业部-码头作业四班组',
|
||||
INSPECTED_SITEUSER_NAME: '杨斌',
|
||||
INSPECTION_DEPARTMENT_NAME: '安全监督部岗位员工',
|
||||
INSPECTION_USER_NAME: '修涛',
|
||||
INSPECTED_SITEUSER_SIGN_TIME: ''
|
||||
},
|
||||
{
|
||||
INSPECTED_DEPARTMENT_ID: 'e4f473698d904f1e948de14892a8d98b',
|
||||
INSPECTION_TYPE_NAME: '日检查',
|
||||
INSPECTION_TIME_START: '2023-11-23 07:35',
|
||||
INSPECTED_SITEUSER_ID: '9a261c843f494e4a82d5e0b57b9e34d4',
|
||||
INSPECTED_DEPARTMENT_NAME: '码头作业四班组',
|
||||
INSPECTED_SITEUSER_SIGN_IMG: '',
|
||||
INSPECTION_ORIGINATOR_NAME: '修涛',
|
||||
INSPECTION_TIME_END: '2023-11-23 08:24',
|
||||
INSPECTION_SUBJECT: '安全',
|
||||
INSPECTED_EXPLAIN: '',
|
||||
INSPECTION_STATUS: '2',
|
||||
INSPECTION_ID: '5d2be055c10d4bf8ab57c72256105a76',
|
||||
INSPECTED_DEPARTMENT_NAMES: '码头作业部-码头作业四班组',
|
||||
INSPECTED_SITEUSER_NAME: '杨斌',
|
||||
INSPECTION_DEPARTMENT_NAME: '安全监督部岗位员工',
|
||||
INSPECTION_USER_NAME: '修涛',
|
||||
INSPECTED_SITEUSER_SIGN_TIME: ''
|
||||
},
|
||||
{
|
||||
INSPECTED_DEPARTMENT_ID: 'e4f473698d904f1e948de14892a8d98b',
|
||||
INSPECTION_TYPE_NAME: '日检查',
|
||||
INSPECTION_TIME_START: '2023-11-23 07:35',
|
||||
INSPECTED_SITEUSER_ID: '9a261c843f494e4a82d5e0b57b9e34d4',
|
||||
INSPECTED_DEPARTMENT_NAME: '码头作业四班组',
|
||||
INSPECTED_SITEUSER_SIGN_IMG: '',
|
||||
INSPECTION_ORIGINATOR_NAME: '修涛',
|
||||
INSPECTION_TIME_END: '2023-11-23 08:30',
|
||||
INSPECTION_SUBJECT: '环保',
|
||||
INSPECTED_EXPLAIN: '',
|
||||
INSPECTION_STATUS: '2',
|
||||
INSPECTION_ID: 'ababd337d7b0473190cc2148684e99c2',
|
||||
INSPECTED_DEPARTMENT_NAMES: '码头作业部-码头作业四班组',
|
||||
INSPECTED_SITEUSER_NAME: '杨斌',
|
||||
INSPECTION_DEPARTMENT_NAME: '安全监督部岗位员工',
|
||||
INSPECTION_USER_NAME: '修涛',
|
||||
INSPECTED_SITEUSER_SIGN_TIME: ''
|
||||
},
|
||||
{
|
||||
INSPECTED_DEPARTMENT_ID: 'e12b3f14fae0478b9556171723365f82',
|
||||
INSPECTION_TYPE_NAME: '日检查',
|
||||
INSPECTION_TIME_START: '2023-11-23 00:30',
|
||||
INSPECTED_SITEUSER_ID: 'ba235d199ad741e8a70baff8c7bbe4ef',
|
||||
INSPECTED_DEPARTMENT_NAME: '储运作业三班组',
|
||||
INSPECTED_SITEUSER_SIGN_IMG: '',
|
||||
INSPECTION_ORIGINATOR_NAME: '王柏',
|
||||
INSPECTION_TIME_END: '2023-11-23 00:50',
|
||||
INSPECTION_SUBJECT: '安全',
|
||||
INSPECTED_EXPLAIN: '',
|
||||
INSPECTION_STATUS: '2',
|
||||
INSPECTION_ID: '0bfba15eea9c4e0b9fed1b84dfe7687a',
|
||||
INSPECTED_DEPARTMENT_NAMES: '储运作业部-储运作业三班组',
|
||||
INSPECTED_SITEUSER_NAME: '郑毅',
|
||||
INSPECTION_DEPARTMENT_NAME: '安全监督部岗位员工',
|
||||
INSPECTION_USER_NAME: '王柏',
|
||||
INSPECTED_SITEUSER_SIGN_TIME: ''
|
||||
},
|
||||
{
|
||||
INSPECTED_DEPARTMENT_ID: 'e12b3f14fae0478b9556171723365f82',
|
||||
INSPECTION_TYPE_NAME: '日检查',
|
||||
INSPECTION_TIME_START: '2023-11-22 20:10',
|
||||
INSPECTED_SITEUSER_ID: 'ba235d199ad741e8a70baff8c7bbe4ef',
|
||||
INSPECTED_DEPARTMENT_NAME: '储运作业三班组',
|
||||
INSPECTED_SITEUSER_SIGN_IMG: '',
|
||||
INSPECTION_ORIGINATOR_NAME: '王柏',
|
||||
INSPECTION_TIME_END: '2023-11-22 21:10',
|
||||
INSPECTION_SUBJECT: '环保',
|
||||
INSPECTED_EXPLAIN: '',
|
||||
INSPECTION_STATUS: '2',
|
||||
INSPECTION_ID: '698888dd4e6a4627bcaa0cd5e77dd14f',
|
||||
INSPECTED_DEPARTMENT_NAMES: '储运作业部-储运作业三班组',
|
||||
INSPECTED_SITEUSER_NAME: '郑毅',
|
||||
INSPECTION_DEPARTMENT_NAME: '安全监督部岗位员工',
|
||||
INSPECTION_USER_NAME: '王柏',
|
||||
INSPECTED_SITEUSER_SIGN_TIME: ''
|
||||
},
|
||||
{
|
||||
INSPECTED_DEPARTMENT_ID: 'e12b3f14fae0478b9556171723365f82',
|
||||
INSPECTION_TYPE_NAME: '日检查',
|
||||
INSPECTION_TIME_START: '2023-11-22 20:10',
|
||||
INSPECTED_SITEUSER_ID: 'ba235d199ad741e8a70baff8c7bbe4ef',
|
||||
INSPECTED_DEPARTMENT_NAME: '储运作业三班组',
|
||||
INSPECTED_SITEUSER_SIGN_IMG: '',
|
||||
INSPECTION_ORIGINATOR_NAME: '王柏',
|
||||
INSPECTION_TIME_END: '2023-11-22 21:10',
|
||||
INSPECTION_SUBJECT: '安全',
|
||||
INSPECTED_EXPLAIN: '',
|
||||
INSPECTION_STATUS: '2',
|
||||
INSPECTION_ID: '99670a4b384c4c2f906a7ec12b6aa0fb',
|
||||
INSPECTED_DEPARTMENT_NAMES: '储运作业部-储运作业三班组',
|
||||
INSPECTED_SITEUSER_NAME: '郑毅',
|
||||
INSPECTION_DEPARTMENT_NAME: '安全监督部岗位员工',
|
||||
INSPECTION_USER_NAME: '王柏',
|
||||
INSPECTED_SITEUSER_SIGN_TIME: ''
|
||||
},
|
||||
{
|
||||
INSPECTED_DEPARTMENT_ID: 'ad19be6774f940179a758bd088f86cf8',
|
||||
INSPECTION_TYPE_NAME: '日检查',
|
||||
INSPECTION_TIME_START: '2023-11-22 13:40',
|
||||
INSPECTED_SITEUSER_ID: '98f191d6347a408482002420cde656be',
|
||||
INSPECTED_DEPARTMENT_NAME: '码头作业三班组',
|
||||
INSPECTED_SITEUSER_SIGN_IMG: '',
|
||||
INSPECTION_ORIGINATOR_NAME: '宋洪超',
|
||||
INSPECTION_TIME_END: '2023-11-22 14:30',
|
||||
INSPECTION_SUBJECT: '安全',
|
||||
INSPECTED_EXPLAIN: '',
|
||||
INSPECTION_STATUS: '2',
|
||||
INSPECTION_ID: '660976cc962b415fb4105fae54edc07a',
|
||||
INSPECTED_DEPARTMENT_NAMES: '码头作业部-码头作业三班组',
|
||||
INSPECTED_SITEUSER_NAME: '胡涛',
|
||||
INSPECTION_DEPARTMENT_NAME: '安全监督部岗位员工',
|
||||
INSPECTION_USER_NAME: '宋洪超',
|
||||
INSPECTED_SITEUSER_SIGN_TIME: ''
|
||||
}
|
||||
]
|
||||
|
|
@ -0,0 +1,476 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
<el-form label-width="100px">
|
||||
<el-row>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="被检查单位">
|
||||
<el-input v-model="search.INSPECTED_DEPARTMENT_NAME" placeholder="被检查单位..." />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="检查部门">
|
||||
<el-input v-model="search.INSPECTION_DEPARTMENT_NAME" placeholder="检查部门..." />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="检查发起人">
|
||||
<el-input v-model="search.INSPECTION_ORIGINATOR_NAME" placeholder="检查发起人..." />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="检查类型">
|
||||
<SelectTree
|
||||
ref="tree_InspectionType"
|
||||
:clearable="false"
|
||||
:options="inspectionTypeList"
|
||||
:props="defaultProps"
|
||||
v-model="search.INSPECTION_TYPE"
|
||||
:canparent="false"
|
||||
placeholder="这里选择检查类型..."
|
||||
children-name="nodes" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="检查时间">
|
||||
<el-date-picker
|
||||
v-model="search.INSPECTION_TIME"
|
||||
style="width: 100%;"
|
||||
type="daterange"
|
||||
value-format="yyyy-MM-dd"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="检查状态">
|
||||
<el-select v-model="search.INSPECTION_STATUS" placeholder="检查状态" clearable style="width: 100%">
|
||||
<el-option :value="0" label="待检查人核实"/>
|
||||
<el-option :value="1" label="检查人核实中"/>
|
||||
<el-option :value="2" label="待被检查人确认"/>
|
||||
<el-option :value="3" label="待指派"/>
|
||||
<el-option :value="-1" label="检查人核实打回"/>
|
||||
<el-option :value="-2" label="被检查人申辩"/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="检查题目">
|
||||
<el-select v-model="search.INSPECTION_SUBJECT" placeholder="检查题目" clearable style="width: 100%">
|
||||
<el-option v-for="item in INSPECTION_SUBJECT_LIST" :key="item.ID" :label="item.NAME" :value="item.ID" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label-width="10px">
|
||||
<el-button v-waves type="primary" icon="el-icon-search" @click="getQuery">
|
||||
搜索
|
||||
</el-button>
|
||||
<el-button v-waves type="success" icon="el-icon-refresh" @click="goKeyReset">
|
||||
重置
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<el-table
|
||||
v-loading="listLoading"
|
||||
ref="multipleTable"
|
||||
:data="varList"
|
||||
:row-key="getRowKey"
|
||||
:header-cell-style="{
|
||||
'font-weight': 'bold',
|
||||
'color': '#000'
|
||||
}"
|
||||
tooltip-effect="dark"
|
||||
border
|
||||
fit
|
||||
highlight-current-row
|
||||
>
|
||||
<el-table-column
|
||||
:reserve-selection="true"
|
||||
type="selection"
|
||||
width="55"
|
||||
align="center"/>
|
||||
<el-table-column type="index" label="序号" width="50" align="center" fixed="left" />
|
||||
<el-table-column prop="INSPECTED_DEPARTMENT_NAMES" width="200" label="被检查单位" align="center" />
|
||||
<el-table-column prop="INSPECTED_SITEUSER_NAME" width="200" label="被检查单位现场负责人" align="center" />
|
||||
<el-table-column prop="INSPECTION_DEPARTMENT_NAME" width="150" label="检查部门" align="center" />
|
||||
<el-table-column prop="INSPECTION_ORIGINATOR_NAME" label="检查发起人" align="center" />
|
||||
<!-- <el-table-column prop="INSPECTED_SITEUSER_NAME" label="被检查单位现场负责人" align="center" />-->
|
||||
<el-table-column prop="INSPECTION_TYPE_NAME" label="检查类型" align="center" />
|
||||
<!-- <el-table-column prop="INSPECTION_PLACE" label="检查场所" />-->
|
||||
<el-table-column label="检查时间" width="280" align="center" >
|
||||
<template slot-scope="{row}">
|
||||
<span>自 {{ row.INSPECTION_TIME_START }} 至 {{ row.INSPECTION_TIME_END }} 止</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="INSPECTION_STATUS" label="状态" align="center" >
|
||||
<template slot-scope="{row}">
|
||||
<template v-if="row.INSPECTION_STATUS == '0'">待检查人核实</template>
|
||||
<template v-else-if="row.INSPECTION_STATUS == '1'">检查人核实中</template>
|
||||
<template v-else-if="row.INSPECTION_STATUS == '2'">待被检查人确认</template>
|
||||
<template v-else-if="row.INSPECTION_STATUS == '3'">待指派</template>
|
||||
<template v-else-if="row.INSPECTION_STATUS == '4'">指派中</template>
|
||||
<template v-else-if="row.INSPECTION_STATUS == '5'">指派完成</template>
|
||||
<template v-else-if="row.INSPECTION_STATUS == '6'">检查待验收</template>
|
||||
<template v-else-if="row.INSPECTION_STATUS == '7'">检查已验收</template>
|
||||
<template v-else-if="row.INSPECTION_STATUS == '8'">已归档</template>
|
||||
<template v-else-if="row.INSPECTION_STATUS == '-1'">检查人核实打回</template>
|
||||
<template v-else-if="row.INSPECTION_STATUS == '-2'">被检查人申辩</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="INSPECTION_SUBJECT" label="检查题目" align="center" width="200"/>
|
||||
<el-table-column label="操作" align="center" width="200" fixed="right">
|
||||
<template slot-scope="{row}">
|
||||
<el-button icon="el-icon-view" size="mini" @click="goDetail(row)">查看</el-button>
|
||||
<el-button
|
||||
v-show="edit && row.INSPECTION_STATUS == '2'"
|
||||
v-if=" row.INSPECTED_SITEUSER_ID === loginUserId"
|
||||
type="primary"
|
||||
icon="el-icon-edit"
|
||||
size="mini"
|
||||
@click="handleConfirm(row)">确认</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div class="page-btn-group">
|
||||
<div/>
|
||||
<pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList" />
|
||||
</div>
|
||||
|
||||
<el-dialog :visible.sync="dialogFormEdit" title="检查确认" width="600px">
|
||||
<el-form ref="form" :rules="rules" :model="form" label-width="110px" style="width: 500px;">
|
||||
<el-form-item label="是否申辩" prop="INSPECTED_EXPLAIN">
|
||||
<el-radio v-model="form.INSPECTION_STATUS" label="3">否</el-radio>
|
||||
<el-radio v-if="count=='1'" v-model="form.INSPECTION_STATUS" label="-2">是</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="form.INSPECTION_STATUS === '-2'" label="申辩内容" prop="INSPECTED_EXPLAIN">
|
||||
<el-input v-model="form.INSPECTED_EXPLAIN" :autosize="{ minRows: 1}" type="textarea" maxlength="2000" placeholder="这里输入申辩内容..."/>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="form.INSPECTION_STATUS === '-2'" label="附件路径">
|
||||
<div class="uo-flex">
|
||||
<el-input v-model="form.INSPECTED_EXPLAIN_FILENAME" :disabled="true" title="请上传附件" />
|
||||
<el-upload
|
||||
:before-upload="beforeFileUpload"
|
||||
class="avatar-uploader"
|
||||
accept=".pdf">
|
||||
<el-button type="primary" icon="el-icon-upload" style="margin-left:10px; ">上传附件</el-button>
|
||||
</el-upload>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="确认人">
|
||||
<el-button data-target="Modal" type="primary" @click="showModal">手写签字</el-button>
|
||||
</el-form-item>
|
||||
<div v-show="form.INSPECTED_SITEUSER_SIGN_IMG != ''" class="demo-image__preview">
|
||||
<el-image
|
||||
:src="form.INSPECTED_SITEUSER_SIGN_IMG"
|
||||
style="width: 300px; height: 200px;border:1px solid #eee;margin-left:110px"/>
|
||||
</div>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="dialogFormEdit = false">取 消</el-button>
|
||||
<el-button type="primary" @click="confirm">提 交</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog :visible.sync="dialogWriteSign" title="手写签字" width="600px" @close="dialogWriteSign = false">
|
||||
<WriteSign :width="600" :height="300" @subCanvas="subCanvas"/>
|
||||
</el-dialog>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import Pagination from '@/components/Pagination' // 通过 el-pagination二次打包
|
||||
import { requestFN } from '@/utils/request'
|
||||
import WriteSign from '@/components/WriteSign'
|
||||
import waves from '@/directive/waves' // waves directive
|
||||
import { upload } from '@/utils/upload'
|
||||
import formatDate from '@/utils/dateformat'
|
||||
import SelectTree from '@/components/SelectTree'
|
||||
import { inspectedList } from '../Mock'
|
||||
|
||||
export default {
|
||||
components: { Pagination, WriteSign, SelectTree },
|
||||
directives: { waves },
|
||||
data() {
|
||||
return {
|
||||
listLoading: true,
|
||||
add: false,
|
||||
del: false,
|
||||
edit: false,
|
||||
count: '',
|
||||
listQuery: {
|
||||
page: 1,
|
||||
limit: 20
|
||||
},
|
||||
total: 0,
|
||||
loginUserId: '', // 登录人ID
|
||||
search: {
|
||||
INSPECTED_SITEUSER_ID: '',
|
||||
INSPECTED_DEPARTMENT_NAME: '', // 被检查单位
|
||||
INSPECTION_DEPARTMENT_NAME: '', // 检查部门
|
||||
INSPECTION_ORIGINATOR_NAME: '', // 检查发起人
|
||||
INSPECTION_TYPE: '', // 检查类型
|
||||
INSPECTION_SUBJECT: '', // 检查题目
|
||||
INSPECTION_TIME: ['', ''], // 检查时间
|
||||
INSPECTION_STATUS: '' // 检查状态
|
||||
},
|
||||
INSPECTION_SUBJECT_LIST: [
|
||||
{ ID: '安全', NAME: '安全' },
|
||||
{ ID: '环保', NAME: '环保' },
|
||||
{ ID: '综合', NAME: '综合' }
|
||||
],
|
||||
inspectionTypeList: [],
|
||||
varList: [],
|
||||
form: {
|
||||
INSPECTION_STATUS: '3',
|
||||
INSPECTION_ID: '', // 安全环保检查ID
|
||||
INSPECTED_EXPLAIN: '', // 申辩内容
|
||||
INSPECTED_EXPLAIN_FILENAME: '', // 申辩附件名称
|
||||
INSPECTED_SITEUSER_SIGN_IMG: '', // 被检查单位现场负责人签字
|
||||
INSPECTED_SITEUSER_SIGN_TIME: '', // 被检查单位现场负责人签字时间
|
||||
file: '' // 申辩附件
|
||||
},
|
||||
dialogFormEdit: false,
|
||||
rules: {
|
||||
INSPECTION_ID: [{ required: true, message: '安全环保检查ID不能为空', trigger: 'blur' }]
|
||||
},
|
||||
dialogWriteSign: false,
|
||||
defaultProps: { value: 'id', children: 'nodes', label: 'name' }
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
'form.INSPECTION_STATUS': {
|
||||
handler(val) {
|
||||
if (val === '-2') {
|
||||
this.form.INSPECTED_EXPLAIN = ''
|
||||
this.form.INSPECTED_EXPLAIN_FILENAME = ''
|
||||
this.form.file = ''
|
||||
}
|
||||
},
|
||||
immediate: false
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getDict()
|
||||
this.getList(this.ROLE_ID)
|
||||
this.getEditMyInfo()
|
||||
},
|
||||
methods: {
|
||||
getRowKey(row) {
|
||||
return row.INSPECTION_ID
|
||||
},
|
||||
getEditMyInfo() { // 获取登录人信息
|
||||
requestFN(
|
||||
'/user/goEditMyInfo',
|
||||
{}
|
||||
).then((data) => {
|
||||
this.loginUserId = data.pd.USER_ID
|
||||
console.log(this.loginUserId)
|
||||
this.ISMAIN = data.pd.ISMAIN
|
||||
this.$forceUpdate()
|
||||
}).catch((e) => {
|
||||
|
||||
})
|
||||
},
|
||||
// 搜索
|
||||
getQuery() {
|
||||
this.$refs.multipleTable.clearSelection()
|
||||
this.getList()
|
||||
},
|
||||
goKeyReset() {
|
||||
this.resetSearch()
|
||||
this.getQuery()
|
||||
},
|
||||
// 获取列表
|
||||
getList() {
|
||||
this.listLoading = true
|
||||
// requestFN(
|
||||
// '/safetyenvironmentalexplain/list?showCount=' + this.listQuery.limit + '¤tPage=' + this.listQuery.page,
|
||||
// {
|
||||
// ...this.search,
|
||||
// INSPECTION_TIME_START: this.search.INSPECTION_TIME[0],
|
||||
// INSPECTION_TIME_END: this.search.INSPECTION_TIME[1]
|
||||
// }
|
||||
// ).then((data) => {
|
||||
// this.listLoading = false
|
||||
// this.varList = data.varList
|
||||
// this.total = data.page.totalResult
|
||||
// this.hasButton()
|
||||
// this.pd = data.pd
|
||||
// }).catch((e) => {
|
||||
// this.listLoading = false
|
||||
// })
|
||||
|
||||
setTimeout(() => {
|
||||
this.listLoading = false
|
||||
this.varList = inspectedList
|
||||
this.total = inspectedList.length
|
||||
}, 400)
|
||||
},
|
||||
// 查看
|
||||
goDetail(row) {
|
||||
this.$parent.activeName = 'InspectionInfo'
|
||||
this.$parent.INSPECTION_ID = row.INSPECTION_ID
|
||||
},
|
||||
// 修改
|
||||
handleConfirm(row) {
|
||||
this.resetForm(row)
|
||||
this.hiddenCount(row.INSPECTION_ID) // 查询安环检查是否有隐患
|
||||
this.dialogFormEdit = true
|
||||
},
|
||||
beforeFileUpload(file) {
|
||||
var testmsg = file.name.substring(file.name.lastIndexOf('.') + 1)
|
||||
const extension = testmsg === 'pdf'
|
||||
if (!extension) {
|
||||
this.$message.error('上传文件只能是 PDF 格式!')
|
||||
return false
|
||||
} else {
|
||||
this.form.file = file
|
||||
this.form.INSPECTED_EXPLAIN_FILENAME = file.name
|
||||
this.$forceUpdate()
|
||||
return false
|
||||
}
|
||||
},
|
||||
hiddenCount(INSPECTION_ID) {
|
||||
this.listLoading = true
|
||||
requestFN(
|
||||
'/safetyenvironmentalexplain/hiddencount',
|
||||
{
|
||||
INSPECTION_ID: INSPECTION_ID
|
||||
}
|
||||
).then((data) => {
|
||||
this.listLoading = false
|
||||
this.count = data.hiddencount
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
},
|
||||
/** 手写板*/
|
||||
showModal() {
|
||||
this.dialogWriteSign = true
|
||||
},
|
||||
// 完成
|
||||
subCanvas(img64) {
|
||||
console.info('img64:' + img64)
|
||||
this.form.INSPECTED_SITEUSER_SIGN_IMG = img64
|
||||
this.$set(this.form, 'INSPECTED_SITEUSER_SIGN_TIME', formatDate(new Date(), 'YYYY-MM-DD HH:mm'))
|
||||
console.info(this.form)
|
||||
this.dialogWriteSign = false
|
||||
},
|
||||
|
||||
// 保存
|
||||
confirm(INSPECTION_STATUS) {
|
||||
this.$refs.form.validate(valid => {
|
||||
if (valid) {
|
||||
if (this.form.INSPECTION_STATUS === '-2') {
|
||||
if (!this.validStr(this.form.INSPECTED_EXPLAIN)) {
|
||||
this.$message.warning('申辩时,申辩内容不能为空')
|
||||
return false
|
||||
}
|
||||
}
|
||||
if (!this.validStr(this.form.INSPECTED_SITEUSER_SIGN_IMG)) {
|
||||
this.$message.warning('请在确认人签字处签字!')
|
||||
return false
|
||||
}
|
||||
const loading = this.$loading({
|
||||
lock: true,
|
||||
text: '数据保存中...',
|
||||
spinner: 'el-icon-loading',
|
||||
background: 'rgba(0, 0, 0, 0.7)'
|
||||
})
|
||||
this.listLoading = true
|
||||
const formData = new FormData()
|
||||
Object.keys(this.form).map(key => {
|
||||
formData.append(key, this.form[key])
|
||||
})
|
||||
upload(
|
||||
'/safetyenvironmentalexplain/add',
|
||||
formData
|
||||
).then((data) => {
|
||||
this.$message({
|
||||
message: '保存成功',
|
||||
type: 'success'
|
||||
})
|
||||
this.listLoading = false
|
||||
loading.close()
|
||||
this.dialogFormEdit = false
|
||||
this.getQuery()
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
loading.close()
|
||||
})
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
// 判断按钮权限,用于是否显示按钮
|
||||
hasButton: function() {
|
||||
var keys = 'safetyenvironmentalinspector:add,safetyenvironmentalinspector:del,safetyenvironmentalinspector:edit,toExcel'
|
||||
requestFN(
|
||||
'/head/hasButton',
|
||||
{
|
||||
keys: keys
|
||||
}
|
||||
).then((data) => {
|
||||
this.add = data.safetyenvironmentalinspectorfhadminadd // 新增权限
|
||||
this.del = data.safetyenvironmentalinspectorfhadmindel // 删除权限
|
||||
this.edit = data.safetyenvironmentalinspectorfhadminedit // 修改权限
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
},
|
||||
// 获取数据字典数据
|
||||
getDict: function() {
|
||||
requestFN(
|
||||
'/dictionaries/listSelectTree',
|
||||
{
|
||||
DICTIONARIES_ID: '60e6481d96e44a5390ff5c347c4d1ffe' // 检查类型
|
||||
}
|
||||
).then((data) => {
|
||||
this.inspectionTypeList = JSON.parse(data.zTreeNodes)
|
||||
}).catch((e) => {
|
||||
|
||||
})
|
||||
},
|
||||
resetSearch() {
|
||||
this.search = {
|
||||
INSPECTED_DEPARTMENT_NAME: '', // 被检查单位
|
||||
INSPECTION_DEPARTMENT_NAME: '', // 检查部门
|
||||
INSPECTION_ORIGINATOR_NAME: '', // 检查发起人
|
||||
INSPECTION_TYPE: '', // 检查类型
|
||||
INSPECTION_SUBJECT: '', // 检查题目
|
||||
INSPECTION_TIME: ['', ''], // 检查时间
|
||||
INSPECTION_STATUS: '' // 检查状态
|
||||
}
|
||||
this.$refs.tree_InspectionType.clearHandle()
|
||||
},
|
||||
resetForm(row) {
|
||||
this.form = {
|
||||
INSPECTION_STATUS: '3',
|
||||
INSPECTION_ID: row.INSPECTION_ID, // 安全环保检查ID
|
||||
INSPECTED_EXPLAIN: '', // 申辩内容
|
||||
INSPECTED_EXPLAIN_FILENAME: '', // 申辩附件名称
|
||||
INSPECTED_SITEUSER_SIGN_IMG: '', // 被检查单位现场负责人签字
|
||||
INSPECTED_SITEUSER_SIGN_TIME: '', // 被检查单位现场负责人签字时间
|
||||
file: '' // 申辩附件
|
||||
}
|
||||
},
|
||||
formatDate(date, format) {
|
||||
return formatDate(date, format)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.uo-flex {
|
||||
display: flex;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
<template>
|
||||
<div>
|
||||
<List v-show="activeName==='List'" ref="list" />
|
||||
<InspectionInfo v-if="activeName==='InspectionInfo'" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import List from './components/list'
|
||||
import InspectionInfo from '../inspection/components/info'
|
||||
export default {
|
||||
components: {
|
||||
List,
|
||||
InspectionInfo
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
activeName: 'List',
|
||||
INSPECTION_ID: ''
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
activeName(newValue, oldValue) {
|
||||
if (newValue == 'List') {
|
||||
this.$refs.list.getQuery()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
|
|
@ -0,0 +1,362 @@
|
|||
export const inspectionList = [
|
||||
{
|
||||
ISDELETE: '0',
|
||||
INSPECTION_TYPE_NAME: '季度检查',
|
||||
INSPECTED_SITEUSER_ID: 'df57edb0fc1f48a59e2696f5fa4105c7',
|
||||
INSPECTION_ORIGINATOR_ID: '1',
|
||||
SITUATION_COUNT: 0,
|
||||
INSPECTION_ORIGINATOR_NAME: '系统管理员',
|
||||
INSPECTION_SUBJECT: '安全',
|
||||
INSPECTED_EXPLAIN: '',
|
||||
INSPECTION_ID: 'fe6cf2942c124ac0a75c159119477a2c',
|
||||
INSPECTED_DEPARTMENT_NAMES: '秦港股份一公司',
|
||||
INSPECTION_TYPE: 'INSPECTION_TYPE005',
|
||||
CREATOR: '1',
|
||||
INSPECTION_TYPE_OTHER: '',
|
||||
INSPECTION_USER_NAME: '王利俭,系统管理员,赵双龙',
|
||||
INSPECTED_SITEUSER_SIGN_TIME: '',
|
||||
INSPECTION_USER_ID:
|
||||
'0f02e502e4844fc39fa65b7e605b532c,1,26db151828ec4e3c9b65a22be2a7d56a',
|
||||
OPERATTIME: '2024-03-19 17:37:01',
|
||||
INSPECTED_DEPARTMENT_ID: '035958e685cf4850bc40151c5e0617a6',
|
||||
INSPECTION_TIME_START: '2024-03-19 00:00',
|
||||
INSPECTION_SOURCE: '4',
|
||||
INSPECTED_DEPARTMENT_NAME: '秦港股份一公司',
|
||||
INSPECTION_LEADDEPARTMENT_ID: 'd01a1dcc91334b04a06bbd05494fe59e',
|
||||
INSPECTION_PLACE: '312312',
|
||||
CORPINFO_ID: '035958e685cf4850bc40151c5e0617a6',
|
||||
INSPECTED_SITEUSER_SIGN_IMG: '',
|
||||
INSPECTION_TIME_END: '2024-03-20 00:00',
|
||||
INSPECTION_STATUS: '0',
|
||||
OPERATOR: '1',
|
||||
INSPECTED_SITEUSER_NAME: '秦港股份一公司',
|
||||
HIDDEN_COUNT: 0,
|
||||
CREATTIME: '2024-03-19 17:37:01'
|
||||
},
|
||||
{
|
||||
ISDELETE: '0',
|
||||
INSPECTION_TYPE_NAME: '月度检查',
|
||||
INSPECTED_SITEUSER_ID: '47f238b9d8d44c11bf5894bee71911d7',
|
||||
INSPECTION_ORIGINATOR_ID: 'c49e1aff858b415eb276afb6b715d6e5',
|
||||
SITUATION_COUNT: 1,
|
||||
INSPECTION_ORIGINATOR_NAME: '齐津铖测试',
|
||||
INSPECTION_SUBJECT: '安全',
|
||||
INSPECTED_EXPLAIN: '',
|
||||
INSPECTION_ID: '2b1985f3945343ceb1f1cc9c8bd8de2d',
|
||||
INSPECTED_DEPARTMENT_NAMES: '秦港股份一公司',
|
||||
INSPECTION_TYPE: 'INSPECTION_TYPE006',
|
||||
CREATOR: 'c49e1aff858b415eb276afb6b715d6e5',
|
||||
INSPECTION_TYPE_OTHER: '',
|
||||
INSPECTION_USER_NAME: '刘鹏志,河港机械,陈帅,齐津铖测试',
|
||||
INSPECTED_SITEUSER_SIGN_TIME: '',
|
||||
INSPECTION_USER_ID:
|
||||
'20dc5beb4a074260be909daf15cd227a,78c32c0a09c24df6bb1bd59bb6d3c3f3,874db059d7b3402ead8597a08140211f,c49e1aff858b415eb276afb6b715d6e5',
|
||||
OPERATTIME: '2024-02-27 17:07:57',
|
||||
INSPECTED_DEPARTMENT_ID: '035958e685cf4850bc40151c5e0617a6',
|
||||
SITUATION: '12321',
|
||||
INSPECTION_TIME_START: '2024-02-27 17:07',
|
||||
INSPECTION_SOURCE: '4',
|
||||
INSPECTED_DEPARTMENT_NAME: '秦港股份一公司',
|
||||
INSPECTION_LEADDEPARTMENT_ID: '5c6efb50bdf44c368352f37c54abe0db',
|
||||
INSPECTION_LEADDEPARTMENT_NAME: '储运作业部',
|
||||
INSPECTION_PLACE: '1',
|
||||
CORPINFO_ID: '035958e685cf4850bc40151c5e0617a6',
|
||||
INSPECTED_SITEUSER_SIGN_IMG: '',
|
||||
INSPECTION_TIME_END: '2024-02-28 00:00',
|
||||
INSPECTION_STATUS: '0',
|
||||
OPERATOR: 'c49e1aff858b415eb276afb6b715d6e5',
|
||||
INSPECTED_SITEUSER_NAME: '测试账号',
|
||||
INSPECTION_DEPARTMENT_NAME: '安全监督部',
|
||||
HIDDEN_COUNT: 0,
|
||||
CREATTIME: '2024-02-27 17:07:57'
|
||||
},
|
||||
{
|
||||
ISDELETE: '0',
|
||||
INSPECTION_TYPE_NAME: '月度检查',
|
||||
INSPECTED_SITEUSER_ID: 'df57edb0fc1f48a59e2696f5fa4105c7',
|
||||
INSPECTION_ORIGINATOR_ID: '1',
|
||||
SITUATION_COUNT: 1,
|
||||
INSPECTION_ORIGINATOR_NAME: '系统管理员',
|
||||
INSPECTION_SUBJECT: '安全',
|
||||
INSPECTED_EXPLAIN: '',
|
||||
INSPECTION_ID: '4fb92a372cd244ea8c4eeb7b4236b5e3',
|
||||
INSPECTED_DEPARTMENT_NAMES: '秦港股份一公司',
|
||||
INSPECTION_TYPE: 'INSPECTION_TYPE006',
|
||||
CREATOR: '1',
|
||||
INSPECTION_TYPE_OTHER: '',
|
||||
INSPECTION_USER_NAME: '方宇物业,系统管理员',
|
||||
INSPECTED_SITEUSER_SIGN_TIME: '',
|
||||
INSPECTION_USER_ID: '1,dc2f62c25462402f9f3a5cc63227fe3e',
|
||||
OPERATTIME: '2024-02-01 11:45:41',
|
||||
INSPECTED_DEPARTMENT_ID: '035958e685cf4850bc40151c5e0617a6',
|
||||
SITUATION: '123',
|
||||
INSPECTION_TIME_START: '2024-02-01 00:00',
|
||||
INSPECTION_SOURCE: '4',
|
||||
INSPECTED_DEPARTMENT_NAME: '秦港股份一公司',
|
||||
INSPECTION_LEADDEPARTMENT_ID: '90966974de3c4b83aca6f8fd6432d5c2',
|
||||
INSPECTION_LEADDEPARTMENT_NAME: '方宇物业',
|
||||
INSPECTION_PLACE: '123',
|
||||
CORPINFO_ID: '035958e685cf4850bc40151c5e0617a6',
|
||||
INSPECTED_SITEUSER_SIGN_IMG: '',
|
||||
HIDDENDESCR: '123',
|
||||
INSPECTION_TIME_END: '2024-02-08 00:00',
|
||||
INSPECTION_STATUS: '0',
|
||||
OPERATOR: '1',
|
||||
INSPECTED_SITEUSER_NAME: '秦港股份一公司',
|
||||
HIDDEN_COUNT: 1,
|
||||
CREATTIME: '2024-02-01 11:45:41'
|
||||
},
|
||||
{
|
||||
ISDELETE: '0',
|
||||
INSPECTION_TYPE_NAME: '月度检查',
|
||||
INSPECTED_SITEUSER_ID: 'df57edb0fc1f48a59e2696f5fa4105c7',
|
||||
INSPECTION_ORIGINATOR_ID: '1',
|
||||
SITUATION_COUNT: 1,
|
||||
INSPECTION_ORIGINATOR_NAME: '系统管理员',
|
||||
INSPECTION_SUBJECT: '安全',
|
||||
INSPECTION_ID: 'c2e7a5d8f79140599c2733eb9a513ec0',
|
||||
INSPECTED_DEPARTMENT_NAMES: '秦港股份一公司',
|
||||
INSPECTION_TYPE: 'INSPECTION_TYPE006',
|
||||
CREATOR: '1',
|
||||
INSPECTION_TYPE_OTHER: '',
|
||||
INSPECTION_USER_NAME: '林杨,系统管理员',
|
||||
INSPECTION_USER_ID: '1,92f7a4a37bd44bd1a9d28a04801b9f8b',
|
||||
OPERATTIME: '2024-01-26 16:17:39',
|
||||
INSPECTED_DEPARTMENT_ID: '035958e685cf4850bc40151c5e0617a6',
|
||||
SITUATION: '123',
|
||||
INSPECTION_TIME_START: '2024-01-26 16:16',
|
||||
INSPECTION_SOURCE: '4',
|
||||
INSPECTED_DEPARTMENT_NAME: '秦港股份一公司',
|
||||
INSPECTION_LEADDEPARTMENT_ID: '55fe356b860d40d5a6e29ac7248bb244',
|
||||
INSPECTION_LEADDEPARTMENT_NAME: '党群工作部',
|
||||
INSPECTION_PLACE: '123',
|
||||
CORPINFO_ID: '035958e685cf4850bc40151c5e0617a6',
|
||||
INSPECTION_TIME_END: '2024-01-26 16:16',
|
||||
INSPECTION_STATUS: '1',
|
||||
OPERATOR: '1',
|
||||
INSPECTED_SITEUSER_NAME: '秦港股份一公司',
|
||||
HIDDEN_COUNT: 0,
|
||||
CREATTIME: '2024-01-26 16:17:39'
|
||||
},
|
||||
{
|
||||
ISDELETE: '0',
|
||||
INSPECTION_TYPE_NAME: '月度安全检查',
|
||||
INSPECTED_SITEUSER_ID: 'df57edb0fc1f48a59e2696f5fa4105c7',
|
||||
INSPECTION_ORIGINATOR_ID: 'df57edb0fc1f48a59e2696f5fa4105c7',
|
||||
SITUATION_COUNT: 1,
|
||||
INSPECTION_ORIGINATOR_NAME: '秦港股份一公司',
|
||||
INSPECTION_SUBJECT: '环保',
|
||||
INSPECTED_EXPLAIN: '',
|
||||
INSPECTION_ID: '5f27862c864f48759cd7499afea44f10',
|
||||
INSPECTED_DEPARTMENT_NAMES: '秦港股份一公司',
|
||||
INSPECTION_TYPE: 'INSPECTION_TYPE002',
|
||||
CREATOR: 'df57edb0fc1f48a59e2696f5fa4105c7',
|
||||
INSPECTION_TYPE_OTHER: '',
|
||||
INSPECTION_USER_NAME: '测试账号,秦港股份一公司',
|
||||
INSPECTED_SITEUSER_SIGN_TIME: '2023-12-28 16:44',
|
||||
INSPECTION_USER_ID:
|
||||
'47f238b9d8d44c11bf5894bee71911d7,df57edb0fc1f48a59e2696f5fa4105c7',
|
||||
OPERATTIME: '2023-12-28 16:49:43',
|
||||
INSPECTED_DEPARTMENT_ID: '035958e685cf4850bc40151c5e0617a6',
|
||||
SITUATION: '123',
|
||||
INSPECTION_TIME_START: '2023-12-28 16:40',
|
||||
INSPECTION_SOURCE: '5',
|
||||
INSPECTED_DEPARTMENT_NAME: '秦港股份一公司',
|
||||
INSPECTION_LEADDEPARTMENT_ID: '035958e685cf4850bc40151c5e0617a6',
|
||||
INSPECTION_LEADDEPARTMENT_NAME: '秦港股份一公司',
|
||||
INSPECTION_PLACE: '123',
|
||||
CORPINFO_ID: '035958e685cf4850bc40151c5e0617a6',
|
||||
INSPECTED_SITEUSER_SIGN_IMG:
|
||||
'/uploadFiles/file/035958e685cf4850bc40151c5e0617a6/20231228/dff0e7a4900a4dc88decfa471864f517.png',
|
||||
HIDDENDESCR: '123',
|
||||
INSPECTION_TIME_END: '2023-12-30 00:00',
|
||||
INSPECTION_STATUS: '8',
|
||||
OPERATOR: 'df57edb0fc1f48a59e2696f5fa4105c7',
|
||||
INSPECTED_SITEUSER_NAME: '秦港股份一公司',
|
||||
INSPECTION_DEPARTMENT_NAME: '秦港股份一公司',
|
||||
HIDDEN_COUNT: 1,
|
||||
CREATTIME: '2023-12-28 16:41:35'
|
||||
},
|
||||
{
|
||||
ISDELETE: '0',
|
||||
INSPECTION_TYPE_NAME: '月度安全检查',
|
||||
INSPECTED_SITEUSER_ID: 'df57edb0fc1f48a59e2696f5fa4105c7',
|
||||
INSPECTION_ORIGINATOR_ID: 'df57edb0fc1f48a59e2696f5fa4105c7',
|
||||
SITUATION_COUNT: 1,
|
||||
INSPECTION_ORIGINATOR_NAME: '秦港股份一公司',
|
||||
INSPECTION_SUBJECT: '环保',
|
||||
INSPECTED_EXPLAIN: '',
|
||||
INSPECTION_ID: '34c2e205e1c648d192f64afb006763cc',
|
||||
INSPECTED_DEPARTMENT_NAMES: '秦港股份一公司',
|
||||
INSPECTION_TYPE: 'INSPECTION_TYPE002',
|
||||
CREATOR: 'df57edb0fc1f48a59e2696f5fa4105c7',
|
||||
INSPECTION_TYPE_OTHER: '',
|
||||
INSPECTION_USER_NAME: '测试账号,秦港股份一公司',
|
||||
INSPECTED_SITEUSER_SIGN_TIME: '',
|
||||
INSPECTION_USER_ID:
|
||||
'47f238b9d8d44c11bf5894bee71911d7,df57edb0fc1f48a59e2696f5fa4105c7',
|
||||
OPERATTIME: '2023-12-28 16:42:49',
|
||||
INSPECTED_DEPARTMENT_ID: '035958e685cf4850bc40151c5e0617a6',
|
||||
SITUATION: '213',
|
||||
INSPECTION_TIME_START: '2023-12-30 00:00',
|
||||
INSPECTION_SOURCE: '5',
|
||||
INSPECTED_DEPARTMENT_NAME: '秦港股份一公司',
|
||||
INSPECTION_LEADDEPARTMENT_ID: '035958e685cf4850bc40151c5e0617a6',
|
||||
INSPECTION_LEADDEPARTMENT_NAME: '秦港股份一公司',
|
||||
INSPECTION_PLACE: '13808888888',
|
||||
CORPINFO_ID: '035958e685cf4850bc40151c5e0617a6',
|
||||
INSPECTED_SITEUSER_SIGN_IMG: '',
|
||||
HIDDENDESCR: '123',
|
||||
INSPECTION_TIME_END: '2023-12-27 00:00',
|
||||
INSPECTION_STATUS: '2',
|
||||
OPERATOR: '47f238b9d8d44c11bf5894bee71911d7',
|
||||
INSPECTED_SITEUSER_NAME: '秦港股份一公司',
|
||||
INSPECTION_DEPARTMENT_NAME: '秦港股份一公司',
|
||||
HIDDEN_COUNT: 1,
|
||||
CREATTIME: '2023-12-28 16:38:18'
|
||||
},
|
||||
{
|
||||
ISDELETE: '0',
|
||||
INSPECTION_TYPE_NAME: '周检查',
|
||||
INSPECTED_SITEUSER_ID: 'df57edb0fc1f48a59e2696f5fa4105c7',
|
||||
INSPECTION_ORIGINATOR_ID: '1',
|
||||
SITUATION_COUNT: 1,
|
||||
INSPECTION_ORIGINATOR_NAME: '系统管理员',
|
||||
INSPECTION_SUBJECT: '安全',
|
||||
INSPECTED_EXPLAIN: '',
|
||||
INSPECTION_ID: '13ee7cf839564cc9b7b42fd5344111c4',
|
||||
INSPECTED_DEPARTMENT_NAMES: '秦港股份一公司',
|
||||
INSPECTION_TYPE: 'INSPECTION_TYPE008',
|
||||
CREATOR: '1',
|
||||
INSPECTION_TYPE_OTHER: '',
|
||||
INSPECTION_USER_NAME: '河港港工,系统管理员',
|
||||
INSPECTED_SITEUSER_SIGN_TIME: '2023-12-28 16:00',
|
||||
INSPECTION_USER_ID: '1,29241f8f50ef4dc2ba426f310180df73',
|
||||
OPERATTIME: '2023-12-28 16:21:47',
|
||||
INSPECTED_DEPARTMENT_ID: '035958e685cf4850bc40151c5e0617a6',
|
||||
SITUATION: '123',
|
||||
INSPECTION_TIME_START: '2023-12-13 00:00',
|
||||
INSPECTION_SOURCE: '4',
|
||||
INSPECTED_DEPARTMENT_NAME: '秦港股份一公司',
|
||||
INSPECTION_LEADDEPARTMENT_ID: '3a854eefa7894e06aaa1a2611bca80f6',
|
||||
INSPECTION_LEADDEPARTMENT_NAME: '河港港工',
|
||||
INSPECTION_PLACE: 'LLXCheckLocation',
|
||||
CORPINFO_ID: '035958e685cf4850bc40151c5e0617a6',
|
||||
INSPECTED_SITEUSER_SIGN_IMG:
|
||||
'/uploadFiles/file/035958e685cf4850bc40151c5e0617a6/20231228/f13f20306b9f45ecbe416a109948c699.png',
|
||||
HIDDENDESCR: 'dangerDesc',
|
||||
INSPECTION_TIME_END: '2023-12-27 00:00',
|
||||
INSPECTION_STATUS: '6',
|
||||
OPERATOR: 'df57edb0fc1f48a59e2696f5fa4105c7',
|
||||
INSPECTED_SITEUSER_NAME: '秦港股份一公司',
|
||||
HIDDEN_COUNT: 1,
|
||||
CREATTIME: '2023-12-28 15:22:54'
|
||||
},
|
||||
{
|
||||
ISDELETE: '0',
|
||||
INSPECTION_TYPE_NAME: '日检查',
|
||||
INSPECTED_SITEUSER_ID: 'c4d344921c9449659bebd969272cbf4b',
|
||||
INSPECTION_ORIGINATOR_ID: '1f7bf9fcd8954e6db09bcb959b54c5f0',
|
||||
SITUATION_COUNT: 1,
|
||||
INSPECTION_ORIGINATOR_NAME: '陈健',
|
||||
INSPECTION_SUBJECT: '环保',
|
||||
INSPECTED_EXPLAIN: '',
|
||||
INSPECTION_ID: '3a68d411153a423290f14cd4bcd3559e',
|
||||
INSPECTED_DEPARTMENT_NAMES: '储运作业部-储运作业四班组',
|
||||
INSPECTION_TYPE: 'INSPECTION_TYPE009',
|
||||
CREATOR: '1f7bf9fcd8954e6db09bcb959b54c5f0',
|
||||
INSPECTION_USER_NAME: '陈健',
|
||||
INSPECTED_SITEUSER_SIGN_TIME: '2023-11-23 23:34',
|
||||
INSPECTION_USER_ID: '1f7bf9fcd8954e6db09bcb959b54c5f0',
|
||||
OPERATTIME: '2023-11-23 23:33:41',
|
||||
INSPECTED_DEPARTMENT_ID: '9880eef877014ce7860f35b8b4dc6962',
|
||||
SITUATION: '一切正常',
|
||||
INSPECTION_TIME_START: '2023-11-23 19:50',
|
||||
INSPECTION_SOURCE: '5',
|
||||
INSPECTED_DEPARTMENT_NAME: '储运作业四班组',
|
||||
INSPECTION_LEADDEPARTMENT_ID: '329cd5c10cdc4e9488551559efe2c9dd',
|
||||
INSPECTION_LEADDEPARTMENT_NAME: '安全监督部岗位员工',
|
||||
INSPECTION_PLACE: '储运作业部',
|
||||
CORPINFO_ID: '035958e685cf4850bc40151c5e0617a6',
|
||||
INSPECTED_SITEUSER_SIGN_IMG:
|
||||
'/uploadFiles/file/035958e685cf4850bc40151c5e0617a6/20231123/bc8d9c6583c744409d42345395713bb2.jpg',
|
||||
INSPECTION_TIME_END: '2023-11-23 20:35',
|
||||
INSPECTION_STATUS: '8',
|
||||
OPERATOR: 'c4d344921c9449659bebd969272cbf4b',
|
||||
INSPECTED_SITEUSER_NAME: '宋 伟',
|
||||
INSPECTION_DEPARTMENT_NAME: '安全监督部岗位员工',
|
||||
HIDDEN_COUNT: 0,
|
||||
CREATTIME: '2023-11-23 22:03:04'
|
||||
},
|
||||
{
|
||||
ISDELETE: '0',
|
||||
INSPECTION_TYPE_NAME: '日检查',
|
||||
INSPECTED_SITEUSER_ID: 'c4d344921c9449659bebd969272cbf4b',
|
||||
INSPECTION_ORIGINATOR_ID: '1f7bf9fcd8954e6db09bcb959b54c5f0',
|
||||
SITUATION_COUNT: 1,
|
||||
INSPECTION_ORIGINATOR_NAME: '陈健',
|
||||
INSPECTION_SUBJECT: '安全',
|
||||
INSPECTED_EXPLAIN: '',
|
||||
INSPECTION_ID: '67366c041ab3466898a5cfd5390db057',
|
||||
INSPECTED_DEPARTMENT_NAMES: '储运作业部-储运作业四班组',
|
||||
INSPECTION_TYPE: 'INSPECTION_TYPE009',
|
||||
CREATOR: '1f7bf9fcd8954e6db09bcb959b54c5f0',
|
||||
INSPECTION_USER_NAME: '陈健',
|
||||
INSPECTED_SITEUSER_SIGN_TIME: '2023-11-23 23:34',
|
||||
INSPECTION_USER_ID: '1f7bf9fcd8954e6db09bcb959b54c5f0',
|
||||
OPERATTIME: '2023-11-23 23:33:51',
|
||||
INSPECTED_DEPARTMENT_ID: '9880eef877014ce7860f35b8b4dc6962',
|
||||
SITUATION: '一切正常',
|
||||
INSPECTION_TIME_START: '2023-11-23 19:50',
|
||||
INSPECTION_SOURCE: '5',
|
||||
INSPECTED_DEPARTMENT_NAME: '储运作业四班组',
|
||||
INSPECTION_LEADDEPARTMENT_ID: '329cd5c10cdc4e9488551559efe2c9dd',
|
||||
INSPECTION_LEADDEPARTMENT_NAME: '安全监督部岗位员工',
|
||||
INSPECTION_PLACE: '储运作业部',
|
||||
CORPINFO_ID: '035958e685cf4850bc40151c5e0617a6',
|
||||
INSPECTED_SITEUSER_SIGN_IMG:
|
||||
'/uploadFiles/file/035958e685cf4850bc40151c5e0617a6/20231123/64d46d61cb5e405798fd9bb95d39cd87.jpg',
|
||||
INSPECTION_TIME_END: '2023-11-23 20:35',
|
||||
INSPECTION_STATUS: '8',
|
||||
OPERATOR: 'c4d344921c9449659bebd969272cbf4b',
|
||||
INSPECTED_SITEUSER_NAME: '宋 伟',
|
||||
INSPECTION_DEPARTMENT_NAME: '安全监督部岗位员工',
|
||||
HIDDEN_COUNT: 0,
|
||||
CREATTIME: '2023-11-23 22:02:19'
|
||||
},
|
||||
{
|
||||
ISDELETE: '0',
|
||||
INSPECTION_TYPE_NAME: '日检查',
|
||||
INSPECTED_SITEUSER_ID: '98f191d6347a408482002420cde656be',
|
||||
INSPECTION_ORIGINATOR_ID: '1f7bf9fcd8954e6db09bcb959b54c5f0',
|
||||
SITUATION_COUNT: 1,
|
||||
INSPECTION_ORIGINATOR_NAME: '陈健',
|
||||
INSPECTION_SUBJECT: '环保',
|
||||
INSPECTED_EXPLAIN: '',
|
||||
INSPECTION_ID: '6e8015e94529405ea4a3aa37bdd1ecd2',
|
||||
INSPECTED_DEPARTMENT_NAMES: '码头作业部-码头作业三班组',
|
||||
INSPECTION_TYPE: 'INSPECTION_TYPE009',
|
||||
CREATOR: '1f7bf9fcd8954e6db09bcb959b54c5f0',
|
||||
INSPECTION_USER_NAME: '陈健',
|
||||
INSPECTED_SITEUSER_SIGN_TIME: '',
|
||||
INSPECTION_USER_ID: '1f7bf9fcd8954e6db09bcb959b54c5f0',
|
||||
OPERATTIME: '2023-11-23 22:03:47',
|
||||
INSPECTED_DEPARTMENT_ID: 'ad19be6774f940179a758bd088f86cf8',
|
||||
SITUATION: '一切正常',
|
||||
INSPECTION_TIME_START: '2023-11-23 19:10',
|
||||
INSPECTION_SOURCE: '5',
|
||||
INSPECTED_DEPARTMENT_NAME: '码头作业三班组',
|
||||
INSPECTION_LEADDEPARTMENT_ID: '329cd5c10cdc4e9488551559efe2c9dd',
|
||||
INSPECTION_LEADDEPARTMENT_NAME: '安全监督部岗位员工',
|
||||
INSPECTION_PLACE: '码头作业部',
|
||||
CORPINFO_ID: '035958e685cf4850bc40151c5e0617a6',
|
||||
INSPECTED_SITEUSER_SIGN_IMG: '',
|
||||
INSPECTION_TIME_END: '2023-11-23 19:45',
|
||||
INSPECTION_STATUS: '2',
|
||||
OPERATOR: '1f7bf9fcd8954e6db09bcb959b54c5f0',
|
||||
INSPECTED_SITEUSER_NAME: '胡涛',
|
||||
INSPECTION_DEPARTMENT_NAME: '安全监督部岗位员工',
|
||||
HIDDEN_COUNT: 0,
|
||||
CREATTIME: '2023-11-23 22:01:18'
|
||||
}
|
||||
]
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,139 @@
|
|||
<template>
|
||||
<div>
|
||||
<el-dialog v-if="dialogVisible" :visible.sync="dialogVisible" :title="readOnly?'检查人确认':'确认信息'" top="80px" width="50%">
|
||||
<el-form ref="form" :rules="rules" :model="form" label-width="110px" style="width: 500px;">
|
||||
<el-form-item label="检查人意见" prop="INSPECTION_USER_OPINION">
|
||||
<el-input v-model="form.INSPECTION_USER_OPINION" :autosize="{ minRows: 1}" type="textarea" maxlength="2000" placeholder="这里输入检查人意见(有异议时必填)..." title="检查人意见(有异议时必填)"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="检查人">
|
||||
<el-button data-target="Modal" type="primary" @click="showModal">手写签字</el-button>
|
||||
</el-form-item>
|
||||
<div v-show="form.INSPECTION_USER_SIGN_IMG != ''" class="demo-image__preview">
|
||||
<el-image
|
||||
:src="form.INSPECTION_USER_SIGN_IMG"
|
||||
style="width: 300px; height: 200px;border:1px solid #eee;margin-left:110px"/>
|
||||
</div>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
||||
<el-button type="primary" @click="confirm()">通 过</el-button>
|
||||
</div>
|
||||
<el-dialog
|
||||
:visible.sync="innerVisible"
|
||||
width="30%"
|
||||
title="手写签字"
|
||||
append-to-body>
|
||||
<WriteSign :width="600" :height="300" @subCanvas="subCanvas"/>
|
||||
</el-dialog>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import Pagination from '@/components/Pagination' // 通过 el-pagination二次打包
|
||||
import { requestFN } from '@/utils/request'
|
||||
import WriteSign from '@/components/WriteSign'
|
||||
import waves from '@/directive/waves' // waves directive
|
||||
import formatDate from '@/utils/dateformat'
|
||||
export default {
|
||||
components: { Pagination, WriteSign },
|
||||
directives: { waves },
|
||||
data() {
|
||||
return {
|
||||
dialogVisible: false,
|
||||
innerVisible: false,
|
||||
form: {
|
||||
INSPECTION_INSPECTOR_ID: '', // 安全环保检查人员主键ID
|
||||
INSPECTION_ID: '', // 安全环保检查ID
|
||||
INSPECTION_USER_ID: JSON.parse(sessionStorage.getItem('user')).USER_ID, // 检查人
|
||||
INSPECTION_USER_OPINION: '', // 检查人意见(有异议时必填)
|
||||
INSPECTION_USER_SIGN_IMG: '', // 检查人签字
|
||||
INSPECTION_USER_SIGN_TIME: ''// 检查人签字时间
|
||||
},
|
||||
rules: {
|
||||
INSPECTION_ID: [{ required: true, message: '安全环保检查ID不能为空', trigger: 'blur' }],
|
||||
INSPECTION_USER_ID: [{ required: true, message: '检查人不能为空', trigger: 'blur' }]
|
||||
},
|
||||
readOnly: false
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
init(information) {
|
||||
if (information) {
|
||||
this.form.INSPECTION_USER_SIGN_IMG = information.INSPECTION_USER_SIGN_IMG
|
||||
this.form.INSPECTION_USER_OPINION = information.INSPECTION_USER_OPINION
|
||||
this.form.INSPECTION_USER_SIGN_TIME = information.INSPECTION_USER_SIGN_TIME
|
||||
}
|
||||
this.dialogVisible = true
|
||||
},
|
||||
subCanvas(img64) {
|
||||
this.form.INSPECTION_USER_SIGN_IMG = img64
|
||||
this.$set(this.form, 'INSPECTION_USER_SIGN_TIME', formatDate(new Date(), 'YYYY-MM-DD HH:mm'))
|
||||
this.innerVisible = false
|
||||
},
|
||||
spare_confirm() {
|
||||
this.$refs.form.validate(valid => {
|
||||
if (valid) {
|
||||
if (!this.validStr(this.form.INSPECTION_USER_SIGN_IMG)) {
|
||||
this.$message.warning('请在检查人签字处签字!')
|
||||
return false
|
||||
}
|
||||
const loading = this.$loading({
|
||||
lock: true,
|
||||
text: '数据保存中...',
|
||||
spinner: 'el-icon-loading',
|
||||
background: 'rgba(0, 0, 0, 0.7)'
|
||||
})
|
||||
this.listLoading = true
|
||||
requestFN(
|
||||
'/safetyenvironmentalinspector/verify',
|
||||
{ ...this.form,
|
||||
INSPECTION_STATUS: '1'
|
||||
}
|
||||
).then((data) => {
|
||||
this.$message({
|
||||
message: '保存成功',
|
||||
type: 'success'
|
||||
})
|
||||
this.listLoading = false
|
||||
loading.close()
|
||||
this.dialogVisible = false
|
||||
this.getQuery()
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
loading.close()
|
||||
})
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
})
|
||||
},
|
||||
confirm() {
|
||||
if (!this.form.INSPECTION_USER_OPINION) {
|
||||
this.$message.error('您还未填写意见')
|
||||
}
|
||||
if (!this.form.INSPECTION_USER_SIGN_IMG) {
|
||||
this.$message.error('您还未签字')
|
||||
return
|
||||
}
|
||||
this.$emit('getProposal', this.form)
|
||||
this.dialogVisible = false
|
||||
},
|
||||
showModal() {
|
||||
this.innerVisible = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.special .el-tree-node {
|
||||
margin-top: 10px;
|
||||
}
|
||||
</style>
|
||||
<style scoped>
|
||||
.information >>> .el-scrollbar__wrap {
|
||||
overflow-x: hidden;
|
||||
}
|
||||
</style>
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,387 @@
|
|||
<template>
|
||||
<div>
|
||||
<div class="app-container">
|
||||
<div id="printContent" class="dialogContent mb-20">
|
||||
<div class="mb-20">
|
||||
<div class="level-title">
|
||||
<h1>{{ pd.INSPECTION_SUBJECT }}现场安全检查记录</h1>
|
||||
</div>
|
||||
<div class="mb-20">
|
||||
<table class="table-ui">
|
||||
<tr>
|
||||
<td class="tbg" width="12%">被检查单位</td>
|
||||
<td width="30%">{{ pd.INSPECTED_DEPARTMENT_NAMES }}</td>
|
||||
<td class="tbg" width="15%">被检查单位现场负责人</td>
|
||||
<td width="40%">{{ pd.INSPECTED_SITEUSER_NAME }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">检查场所</td>
|
||||
<td colspan="3">{{ pd.INSPECTION_PLACE }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">牵头检查部门</td>
|
||||
<td>{{ pd.INSPECTION_LEADDEPARTMENT_NAME }}</td>
|
||||
<td class="tbg">检查人员</td>
|
||||
<td>{{ pd.INSPECTION_USER_NAME }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">检查类型</td>
|
||||
<td>{{ pd.INSPECTION_TYPE_NAME }}</td>
|
||||
<td class="tbg">检查时间</td>
|
||||
<td>{{ formatTime(pd.INSPECTION_TIME_START) }} 至 {{ formatTime(pd.INSPECTION_TIME_END) }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">记录填写时间</td>
|
||||
<td colspan="3">{{ pd.CREATTIME }}</td>
|
||||
</tr>
|
||||
|
||||
<tr v-if="pd.situationList">
|
||||
<td colspan="4" style="padding: 0;">
|
||||
<table class="table-vi">
|
||||
<tr>
|
||||
<th>检查情况</th>
|
||||
</tr>
|
||||
<tr v-for="(item,index) in pd.situationList" :key="'situation'+index">
|
||||
<td>{{ index + 1 }}. {{ item.SITUATION }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr v-if="false">
|
||||
<td colspan="4" style="padding: 0;">
|
||||
<table class="table-vi">
|
||||
<tr>
|
||||
<th colspan="5">发现问题</th>
|
||||
</tr>
|
||||
<tbody v-for="(item, index) in pd.hiddenList" :key="'hidden'+index">
|
||||
<tr>
|
||||
<td rowspan="7" align="center" style="font-size: larger;font-weight: bolder">{{ index+1 }}</td>
|
||||
<td class="tbg">隐患发现人</td>
|
||||
<td>{{ item.CREATOR_NAME }}</td>
|
||||
<td class="tbg">隐患级别</td>
|
||||
<td>{{ item.HIDDENLEVEL_NAME }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">隐患描述</td>
|
||||
<td colspan="3">{{ item.HIDDENDESCR }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">隐患发现时间</td>
|
||||
<td>{{ item.DISCOVERYTIME }}</td>
|
||||
<td class="tbg">隐患部位</td>
|
||||
<td>{{ item.HIDDENPART_NAME?item.HIDDENPART_NAME:item.HIDDENPART }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">隐患位置描述</td>
|
||||
<td>{{ item.POSITIONDESC }}</td>
|
||||
<td class="tbg">是否是相关方</td>
|
||||
<td>{{ item.ISRELEVANT ==='1'?'是':'否' }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">隐患类型</td>
|
||||
<td>{{ item.HIDDENTYPE_NAME?item.HIDDENTYPE_NAME:item.HIDDENTYPE }}</td>
|
||||
<!--<td class="tbg">隐患类型2</td>
|
||||
<td>{{ item.HIDDENTYPE2_NAME }}</td>-->
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">隐患位置</td>
|
||||
<td colspan="3">
|
||||
<el-button icon="el-icon-place" circle @click="showMap(item)" />
|
||||
<span>
|
||||
经度:{{ item.LONGITUDE }} , 纬度:{{ item.LATITUDE }}
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tbg">隐患图片</td>
|
||||
<td colspan="3">
|
||||
<div v-for="(data, indexImg) in item.hiddenImgs" :key="'hd'+index+'Img'+indexImg" class="demo-image__preview" style="float: left; margin-right: 5px">
|
||||
<el-image
|
||||
:src="config.fileUrl + data.FILEPATH"
|
||||
:preview-src-list="new Array(config.fileUrl + data.FILEPATH)"
|
||||
style="width: 100px; height: 100px"/>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr v-if="item.hiddenVideos">
|
||||
<td class="tbg">隐患视频</td>
|
||||
<td colspan="3">
|
||||
<div v-for="(data, indexV) in item.hiddenVideos" :key="'hd'+index+'Img'+indexV" class="demo-image__preview" style="float: left; margin-right: 5px">
|
||||
<el-button icon="el-icon-video-camera" circle @click="goViewVideo(data)"/>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr v-if="pd.hiddenList">
|
||||
<td colspan="4" style="padding: 0;">
|
||||
<table class="table-vi">
|
||||
<tr>
|
||||
<th colspan="5">发现问题</th>
|
||||
</tr>
|
||||
<tbody v-for="(item) in pd.hiddenList" :key="item.HIDDEN_ID" class="no-print">
|
||||
<tr>
|
||||
<td class="tbg">隐患描述</td>
|
||||
<td>{{ item.HIDDENDESCR }}</td>
|
||||
<td class="tbg">隐患部位</td>
|
||||
<td>{{ item.HIDDENPART_NAME?item.HIDDENPART_NAME:item.HIDDENPART }}</td>
|
||||
<td width="200">
|
||||
<el-button icon="el-icon-view" size="mini" @click="goView(item.HIDDEN_ID)">查看</el-button>
|
||||
<el-button type="success" icon="el-icon-view" size="mini" @click="checkFlow(item)">流程图</el-button>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tr v-for="(item,index) in pd.hiddenList" :key="'hidden'+index" class="no-tr-show">
|
||||
<td>{{ index + 1 }}. {{ item.HIDDENDESCR }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div v-if="pd.inspectorList && pd.inspectorList.length > 0" class="level-title">
|
||||
<h1>检查人员核实情况</h1>
|
||||
</div>
|
||||
<div v-if="pd.inspectorList && pd.inspectorList.length > 0" class="mb-20">
|
||||
<table class="table-ui">
|
||||
<tr>
|
||||
<th>序号</th>
|
||||
<th>核实人员</th>
|
||||
<th>核实时间</th>
|
||||
<th>核实意见</th>
|
||||
<th>签字</th>
|
||||
</tr>
|
||||
<tr v-for="(item, index) in pd.inspectorList" :key="'inspector'+index">
|
||||
<td>{{ index+1 }}</td>
|
||||
<td>{{ item.INSPECTION_USER_NAME }}</td>
|
||||
<td>{{ item.INSPECTION_USER_SIGN_TIME }}</td>
|
||||
<td>{{ item.INSPECTION_USER_OPINION }}</td>
|
||||
<td>
|
||||
<el-image
|
||||
:src="config.fileUrl + item.INSPECTION_USER_SIGN_IMG"
|
||||
:preview-src-list="new Array(config.fileUrl + item.INSPECTION_USER_SIGN_IMG)"
|
||||
style="width: 100px; height: 100px"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div v-if="pd.INSPECTED_SITEUSER_SIGN_TIME" class="level-title">
|
||||
<h1>被检查单位现场负责人确认情况</h1>
|
||||
</div>
|
||||
<div v-if="pd.INSPECTED_SITEUSER_SIGN_TIME" class="mb-20">
|
||||
<table class="table-ui">
|
||||
<tr>
|
||||
<td class="tbg">被检查单位现场负责人(签字):</td>
|
||||
<td>
|
||||
<el-image
|
||||
:src="config.fileUrl + pd.INSPECTED_SITEUSER_SIGN_IMG"
|
||||
:preview-src-list="new Array(config.fileUrl + pd.INSPECTED_SITEUSER_SIGN_IMG)"
|
||||
style="width: 100px; height: 100px"/>
|
||||
</td>
|
||||
<!--<td class="tbg">确认时间:</td>-->
|
||||
<!--<td>{{ pd.INSPECTED_SITEUSER_SIGN_TIME }}</td>-->
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<el-dialog :visible.sync="dialogMap" :title="'隐患位置'" width="80%">
|
||||
<div>
|
||||
<iframe id="iframe" ref="iframe" :src="iframeSrc" frameborder="0" allowtransparency="true" width="100%" height="600"/>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog :visible.sync="dialogViewVideo" title="视频" width="800px" @close="closePlay">
|
||||
<div>
|
||||
<video-player
|
||||
ref="hdVideoPlayer"
|
||||
:playsinline="true"
|
||||
:options="playerOptions"
|
||||
class="video-player vjs-custom-skin"/>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<video id="videoPlayer" controls="controls" crossOrigin="anonymous" style="display: none">
|
||||
<source id="videoSource" src="" type="video/mp4">
|
||||
</video>
|
||||
<canvas id="canvasVideo" style="display: none"/>
|
||||
|
||||
<div class="ui-height" />
|
||||
<div class="ui-foot">
|
||||
<el-button v-print="'#printContent'" type="primary" icon="el-icon-printer" size="mini">打印</el-button>
|
||||
<el-button plain type="info" @click="goBack">返 回</el-button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<information ref="information"/>
|
||||
<flowChart ref="flowChart"/>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { requestFN } from '@/utils/request'
|
||||
import dateformat from '@/utils/dateformat'
|
||||
import { videoPlayer } from 'vue-video-player'
|
||||
import 'video.js/dist/video-js.css'
|
||||
import information from '../../../hiddenUtil/information'
|
||||
import flowChart from '../../../hiddenUtil/flowChart'
|
||||
export default {
|
||||
components: { videoPlayer, information, flowChart },
|
||||
data() {
|
||||
return {
|
||||
listLoading: true,
|
||||
config: config,
|
||||
iframeSrc: '',
|
||||
dialogMap: false,
|
||||
pd: {
|
||||
INSPECTION_SUBJECT: '', // 检查标题
|
||||
INSPECTION_SOURCE: '5', // 检查来源(4-监管端 5-企业端)
|
||||
inspectorList: [], // 检查人员
|
||||
INSPECTION_ORIGINATOR_NAME: '', // 检查发起人
|
||||
INSPECTED_DEPARTMENT_NAME: '', // 被检查单位
|
||||
INSPECTED_SITEUSER_NAME: '', // 被检查单位现场负责人
|
||||
INSPECTED_EXPLAIN: '', // 申辩内容
|
||||
INSPECTED_SITEUSER_SIGN_IMG: '', // 被检查单位现场负责人签字
|
||||
INSPECTED_SITEUSER_SIGN_TIME: '', // 被检查单位现场负责人签字时间
|
||||
INSPECTION_TYPE_NAME: '', // 检查类型
|
||||
INSPECTION_PLACE: '', // 检查场所
|
||||
INSPECTION_TIME_START: '', // 检查开始时间
|
||||
INSPECTION_TIME_END: '', // 检查结束时间
|
||||
INSPECTION_STATUS: '', // 状态(0.暂存 1.检查人待确认、2.被检查人待确认、3.归档 -1.检查人异议打回 -2被检查人申辩)
|
||||
INSPECTED_DEPARTMENT_NAMES: '',
|
||||
situationList: [''], // 检查情况
|
||||
hiddenList: [] // 隐患信息集合
|
||||
},
|
||||
dialogViewVideo: false,
|
||||
playerOptions: {
|
||||
playbackRates: [0.5, 1.0, 1.5, 2.0], // 可选的播放速度
|
||||
autoplay: false, // 如果为true,浏览器准备好时开始回放。
|
||||
muted: false, // 默认情况下将会消除任何音频。
|
||||
loop: false, // 是否视频一结束就重新开始。
|
||||
preload: 'auto', // 建议浏览器在<video>加载元素后是否应该开始下载视频数据。auto浏览器选择最佳行为,立即开始加载视频(如果浏览器支持)
|
||||
language: 'zh-CN',
|
||||
aspectRatio: '16:9', // 将播放器置于流畅模式,并在计算播放器的动态大小时使用该值。值应该代表一个比例 - 用冒号分隔的两个数字(例如"16:9"或"4:3")
|
||||
fluid: true, // 当true时,Video.js player将拥有流体大小。换句话说,它将按比例缩放以适应其容器。
|
||||
sources: [{
|
||||
type: 'video/mp4', // 类型
|
||||
src: '' // url地址
|
||||
}],
|
||||
poster: '', // 封面地址
|
||||
notSupportedMessage: '此视频暂无法播放,请稍后再试', // 允许覆盖Video.js无法播放媒体源时显示的默认信息。
|
||||
controlBar: {
|
||||
timeDivider: true, // 当前时间和持续时间的分隔符
|
||||
durationDisplay: true, // 显示持续时间
|
||||
remainingTimeDisplay: true, // 是否显示剩余时间功能
|
||||
fullscreenToggle: true // 是否显示全屏按钮
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.iframeSrc = this.config.weburl + 'static/mapshow.html?t=' + Math.random()
|
||||
},
|
||||
async mounted() {
|
||||
// await this.getData()
|
||||
},
|
||||
methods: {
|
||||
formatTime(date, column) {
|
||||
if (date) {
|
||||
return dateformat(date, 'YYYY年MM月DD日HH时mm分')
|
||||
} else {
|
||||
return ''
|
||||
}
|
||||
},
|
||||
checkFlow(item) {
|
||||
this.$refs.flowChart.init(item)
|
||||
},
|
||||
goView(id) {
|
||||
this.$refs.information.init(id)
|
||||
},
|
||||
getData() {
|
||||
return new Promise((resolve) => {
|
||||
requestFN(
|
||||
'/safetyenvironmental/goShow',
|
||||
{
|
||||
INSPECTION_ID: this.$parent.INSPECTION_ID
|
||||
}
|
||||
).then((data) => {
|
||||
this.pd = Object.assign({}, data.pd) // copy obj
|
||||
this.pd.hiddenList.forEach(item => {
|
||||
if (item.hiddenVideos.length > 0) {
|
||||
this.$set(item.hiddenVideos[0], 'IMGFILEPATH', this.findvideocover(item.hiddenVideos[0]))
|
||||
}
|
||||
})
|
||||
this.listLoading = false
|
||||
resolve()
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
})
|
||||
},
|
||||
findvideocover(item) {
|
||||
const source = document.getElementById('videoSource') // 获取视频对象
|
||||
source.src = this.config.fileUrl + item.FILEPATH
|
||||
const video = document.getElementById('videoPlayer')
|
||||
video.currentTime = 1 // 第一帧
|
||||
video.load()
|
||||
var canvas = document.getElementById('canvasVideo') // 获取 canvas 对象
|
||||
video.oncanplay = () => {
|
||||
// 利用canvas对象方法绘图
|
||||
canvas.getContext('2d').drawImage(video, 0, 0, video.clientWidth, video.clientHeight)
|
||||
// 转换成base64形式
|
||||
item.IMGFILEPATH = canvas.toDataURL('image/png') // 截取后的视频封面
|
||||
}
|
||||
},
|
||||
goViewVideo(row) {
|
||||
const type = row.FILEPATH.slice(row.FILEPATH.lastIndexOf('.') + 1)
|
||||
this.playerOptions.sources[0].src = this.config.fileUrl + row.FILEPATH
|
||||
this.playerOptions.poster = this.config.fileUrl + row.IMGFILEPATH
|
||||
this.playerOptions.sources[0].type = 'video/' + type
|
||||
this.dialogViewVideo = true
|
||||
},
|
||||
closePlay() {
|
||||
this.$refs.hdVideoPlayer.player.pause()
|
||||
},
|
||||
showMap(obj) {
|
||||
this.dialogMap = true
|
||||
this.iframeSrc = this.config.weburl + 'static/mapshow.html?t=' + Math.random()
|
||||
this.$nextTick(() => {
|
||||
const iframe = document.querySelector('#iframe')
|
||||
// 处理兼容行问题
|
||||
if (iframe.attachEvent) {
|
||||
iframe.attachEvent('onload', function() {
|
||||
this.contentWindow.postMessage(
|
||||
{
|
||||
'name': obj.HIDDENDESCR,
|
||||
'longitude': Number(obj.LONGITUDE),
|
||||
'latitude': Number(obj.LATITUDE)
|
||||
}, '*')
|
||||
})
|
||||
} else {
|
||||
iframe.onload = function() {
|
||||
this.contentWindow.postMessage(
|
||||
{
|
||||
'name': obj.HIDDENDESCR,
|
||||
'longitude': Number(obj.LONGITUDE),
|
||||
'latitude': Number(obj.LATITUDE)
|
||||
}, '*')
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
goBack() {
|
||||
this.$parent.INSPECTION_ID = ''
|
||||
this.$parent.activeName = 'List'
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
</style>
|
||||
|
|
@ -0,0 +1,622 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
<el-form label-width="100px">
|
||||
<el-row>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="被检查单位" prop="INSPECTED_DEPARTMENT_ID">
|
||||
<SelectTree
|
||||
ref="deptTree_Select1"
|
||||
:clearable="false"
|
||||
:options="treeData"
|
||||
:props="defaultProps"
|
||||
v-model="search.INSPECTED_DEPARTMENT_ID"
|
||||
placeholder="请选择被检查单位"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="检查部门" prop="INSPECTION_DEPARTMENT_ID">
|
||||
<SelectTree
|
||||
ref="deptTree_Select2"
|
||||
:clearable="false"
|
||||
:options="treeData"
|
||||
:props="defaultProps"
|
||||
v-model="search.INSPECTION_DEPARTMENT_ID"
|
||||
placeholder="请选择检查部门"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="检查发起人">
|
||||
<el-input v-model="search.INSPECTION_ORIGINATOR_NAME" placeholder="检查发起人..." />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="检查类型">
|
||||
<SelectTree
|
||||
ref="tree_InspectionType"
|
||||
:clearable="false"
|
||||
:options="inspectionTypeList"
|
||||
:props="defaultProps"
|
||||
v-model="search.INSPECTION_TYPE"
|
||||
:canparent="false"
|
||||
placeholder="这里选择检查类型..."
|
||||
children-name="nodes" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="检查时间">
|
||||
<el-date-picker
|
||||
v-model="search.INSPECTION_TIME"
|
||||
type="daterange"
|
||||
style="width: 100%;"
|
||||
value-format="yyyy-MM-dd"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="检查状态">
|
||||
<el-select v-model="search.INSPECTION_STATUS" placeholder="检查状态" clearable style="width: 100%">
|
||||
<el-option v-for="item in statusList" :key="item.ID" :label="item.NAME" :value="item.ID" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="隐患描述">
|
||||
<el-input v-model="search.HIDDENDESCR" placeholder="隐患描述..." />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="检查题目">
|
||||
<el-select v-model="search.INSPECTION_SUBJECT" placeholder="检查题目" clearable style="width: 100%">
|
||||
<el-option v-for="item in INSPECTION_SUBJECT_LIST" :key="item.ID" :label="item.NAME" :value="item.ID" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label-width="10px">
|
||||
<el-button v-waves type="primary" icon="el-icon-search" @click="getQuery">
|
||||
搜索
|
||||
</el-button>
|
||||
<el-button v-waves type="success" icon="el-icon-refresh" @click="goKeyReset">
|
||||
重置
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
|
||||
<div class="app-statistical">
|
||||
<span v-if="search.INSPECTION_SUBJECT == '安全'">
|
||||
{{ INSPECT_NAME }}<i>{{ safetyTotal }}</i>
|
||||
</span>
|
||||
<span v-else-if="search.INSPECTION_SUBJECT == '环保'">
|
||||
{{ INSPECT_NAME }}<i>{{ safetyTotal }}</i>
|
||||
</span>
|
||||
<span v-else-if="search.INSPECTION_SUBJECT == '综合'">
|
||||
{{ INSPECT_NAME }}<i>{{ safetyTotal }}</i>
|
||||
</span>
|
||||
<span v-else>
|
||||
{{ INSPECT_NAME }}<i>{{ safetyTotal }}</i>
|
||||
</span>
|
||||
<span>
|
||||
涉及隐患总数:<i>{{ hiddenTotal }}</i>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<el-table
|
||||
v-loading="listLoading"
|
||||
ref="multipleTable"
|
||||
:data="varList"
|
||||
:row-key="getRowKey"
|
||||
:header-cell-style="{
|
||||
'font-weight': 'bold',
|
||||
'color': '#000'
|
||||
}"
|
||||
tooltip-effect="dark"
|
||||
border
|
||||
fit
|
||||
highlight-current-row
|
||||
>
|
||||
<el-table-column
|
||||
:reserve-selection="true"
|
||||
type="selection"
|
||||
width="55"
|
||||
align="center"/>
|
||||
<el-table-column type="index" label="序号" width="50" align="center" fixed="left" />
|
||||
<el-table-column prop="INSPECTED_DEPARTMENT_NAMES" show-overflow-tooltip width="150" label="被检查单位" align="center" />
|
||||
<el-table-column prop="INSPECTED_SITEUSER_NAME" show-overflow-tooltip width="150" label="被检查单位现场负责人" align="center" />
|
||||
<el-table-column prop="INSPECTION_DEPARTMENT_NAME" show-overflow-tooltip width="150" label="检查部门" align="center" />
|
||||
<el-table-column prop="INSPECTION_ORIGINATOR_NAME" show-overflow-tooltip label="检查发起人" align="center" width="120" />
|
||||
<el-table-column prop="INSPECTION_TYPE_NAME" show-overflow-tooltip label="检查类型" align="center" />
|
||||
<el-table-column prop="HIDDEN_COUNT" show-overflow-tooltip label="涉及隐患数" align="center" width="120" />
|
||||
<el-table-column label="检查时间" show-overflow-tooltip width="280" align="center" >
|
||||
<template slot-scope="{row}">
|
||||
<span>自 {{ row.INSPECTION_TIME_START }} 至 {{ row.INSPECTION_TIME_END }} 止</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="状态" align="center" width="120">
|
||||
<template slot-scope="{row}">
|
||||
{{ translate(row.INSPECTION_STATUS) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="INSPECTION_SUBJECT" label="检查题目" align="center" />
|
||||
<el-table-column label="操作" align="center" width="480" fixed="right">
|
||||
<template slot-scope="{row}">
|
||||
<el-button icon="el-icon-view" size="mini" @click="goDetail(row)">查看</el-button>
|
||||
<el-button type="success" icon="el-icon-view" size="mini" @click="checkFlow(row)">流程图</el-button>
|
||||
<el-button
|
||||
v-show="edit && ( row.INSPECTION_STATUS === '-1')"
|
||||
type="primary"
|
||||
icon="el-icon-edit"
|
||||
size="mini"
|
||||
@click="handleEdit(row.INSPECTION_ID)">编辑</el-button>
|
||||
<el-button
|
||||
v-show="row.INSPECTION_STATUS == '-2'"
|
||||
v-if="row.INSPECTION_ORIGINATOR_ID == loginUserId"
|
||||
type="primary"
|
||||
icon="el-icon-edit"
|
||||
size="mini"
|
||||
@click="handleExplain(row)">申辩处理</el-button>
|
||||
<el-button v-show="del&&row.INSPECTION_SOURCE!='4'" type="danger" icon="el-icon-delete" size="mini" @click="handleDelete(row.INSPECTION_ID)">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<div class="page-btn-group">
|
||||
<div>
|
||||
<el-button v-show="add" type="primary" icon="el-icon-plus" @click="handleAdd">新建检查</el-button>
|
||||
</div>
|
||||
<pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList" />
|
||||
</div>
|
||||
|
||||
<el-dialog :visible.sync="dialogFormEdit" title="申辩处理" width="600px">
|
||||
<el-form ref="form" :rules="rules" :model="form" label-width="110px" style="width: 500px;">
|
||||
<el-form-item label="申辩人">
|
||||
<el-image
|
||||
:src="config.fileUrl + form.INSPECTED_SITEUSER_SIGN_IMG"
|
||||
:preview-src-list="new Array(config.fileUrl + form.INSPECTED_SITEUSER_SIGN_IMG)"
|
||||
style="width: 100px; height: 100px"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="申辩时间">
|
||||
{{ form.INSPECTED_SITEUSER_SIGN_TIME }}
|
||||
</el-form-item>
|
||||
<el-form-item label="申辩说明">
|
||||
<el-input v-model="form.INSPECTED_EXPLAIN" :disabled="true" :autosize="{ minRows: 1}" type="textarea" maxlength="2000" placeholder="这里输入申辩内容..."/>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="form.INSPECTED_EXPLAIN_FILEPATH" label="申辩附件">
|
||||
<span>{{ form.INSPECTED_EXPLAIN_FILENAME }}</span>
|
||||
<el-button type="primary" @click="downloadFile(form.INSPECTION_ID)">下载</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item label="申辩是否成立" prop="INSPECTION_STATUS">
|
||||
<el-radio v-model="form.INSPECTION_STATUS" label="3">否</el-radio>
|
||||
<el-radio v-model="form.INSPECTION_STATUS" label="-2">是</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="form.INSPECTION_STATUS === '3'" label="不成立理由内容" prop="INSPECTED_EXPLAIN_REFUSE">
|
||||
<el-input v-model="form.INSPECTED_EXPLAIN_REFUSE" :autosize="{ minRows: 1}" type="textarea" maxlength="2000" placeholder="这里输入申辩内容..."/>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="form.INSPECTION_STATUS === '3'" label="确认人">
|
||||
<el-button data-target="Modal" type="primary" @click="showModal">手写签字</el-button>
|
||||
</el-form-item>
|
||||
<div v-show="form.INSPECTION_ORIGINATOR_SIGN_IMG != ''" class="demo-image__preview">
|
||||
<el-image
|
||||
:src="form.INSPECTION_ORIGINATOR_SIGN_IMG"
|
||||
style="width: 300px; height: 200px;border:1px solid #eee;margin-left:110px"/>
|
||||
</div>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="dialogFormEdit = false">取 消</el-button>
|
||||
<el-button type="primary" @click="confirm">提 交</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog :visible.sync="dialogWriteSign" title="手写签字" width="600px" @close="dialogWriteSign = false">
|
||||
<WriteSign :width="600" :height="300" @subCanvas="subCanvas"/>
|
||||
</el-dialog>
|
||||
|
||||
<safety-flow-chart ref="safetyFlowChart"/>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import Pagination from '@/components/Pagination'
|
||||
import { requestFN } from '@/utils/request'
|
||||
import waves from '@/directive/waves'
|
||||
import WriteSign from '@/components/WriteSign'
|
||||
import SelectTree from '@/components/SelectTree'
|
||||
import safetyFlowChart from '../../../hiddenUtil/safetyFlowChart'
|
||||
import { inspectionList } from './../Mock'
|
||||
|
||||
export default {
|
||||
components: { Pagination, WriteSign, safetyFlowChart, SelectTree },
|
||||
directives: { waves },
|
||||
data() {
|
||||
return {
|
||||
userInfo: JSON.parse(sessionStorage.getItem('user')),
|
||||
listLoading: false,
|
||||
add: false,
|
||||
del: false,
|
||||
edit: false,
|
||||
INSPECT_NAME: '安全环保总数:',
|
||||
safetyTotal: '',
|
||||
hiddenTotal: '',
|
||||
listQuery: {
|
||||
page: 1,
|
||||
limit: 20
|
||||
},
|
||||
defaultProps: {
|
||||
value: 'id',
|
||||
children: 'nodes',
|
||||
label: 'name'
|
||||
},
|
||||
total: 0,
|
||||
config: config,
|
||||
KEYWORDS: '',
|
||||
loginUserId: '', // 登录人ID
|
||||
search: {
|
||||
HIDDENDESCR: '',
|
||||
INSPECTED_DEPARTMENT_ID: '', // 被检查单位
|
||||
INSPECTION_DEPARTMENT_ID: '', // 检查部门
|
||||
INSPECTION_ORIGINATOR_NAME: '', // 检查发起人
|
||||
INSPECTION_TYPE: '', // 检查类型
|
||||
INSPECTION_TIME: ['', ''], // 检查时间
|
||||
INSPECTION_STATUS: '', // 检查状态
|
||||
INSPECTION_SUBJECT: '' // 检查题目
|
||||
},
|
||||
statusList: [
|
||||
{ ID: '0', NAME: '待检查人核实' },
|
||||
{ ID: '1', NAME: '检查人核实中' },
|
||||
{ ID: '2', NAME: '待被检查人确认' },
|
||||
{ ID: '3', NAME: '待指派' },
|
||||
{ ID: '4', NAME: '指派中' },
|
||||
{ ID: '5', NAME: '指派完成' },
|
||||
{ ID: '6', NAME: '检查待验收' },
|
||||
{ ID: '7', NAME: '检查已验收' },
|
||||
{ ID: '8', NAME: '已归档' },
|
||||
{ ID: '-1', NAME: '检查人核实打回' },
|
||||
{ ID: '-2', NAME: '被检查人申辩' }
|
||||
],
|
||||
INSPECTION_SUBJECT_LIST: [
|
||||
{ ID: '安全', NAME: '安全' },
|
||||
{ ID: '环保', NAME: '环保' },
|
||||
{ ID: '综合', NAME: '综合' }
|
||||
],
|
||||
treeData: [],
|
||||
inspectionTypeList: [],
|
||||
varList: [],
|
||||
multipleSelectionAll: [], // 所有选中的数据包含跨页数据
|
||||
multipleSelection: [], // 当前页选中的数据
|
||||
form: {
|
||||
INSPECTED_SITEUSER_SIGN_IMG: '',
|
||||
INSPECTED_SITEUSER_SIGN_TIME: '',
|
||||
INSPECTED_EXPLAIN: '',
|
||||
INSPECTED_EXPLAIN_FILENAME: '', // 申辩附件名称
|
||||
INSPECTED_EXPLAIN_FILEPATH: '',
|
||||
INSPECTION_STATUS: '3',
|
||||
INSPECTION_ID: '', // 安全环保检查ID
|
||||
INSPECTED_EXPLAIN_REFUSE: '', // 申辩拒绝理由
|
||||
INSPECTION_ORIGINATOR_SIGN_IMG: '' // 检查发起人签字
|
||||
// INSPECTION_ORIGINATOR_SIGN_TIME: '', // 被检查单位现场负责人签字时间
|
||||
},
|
||||
dialogFormEdit: false,
|
||||
dialogWriteSign: false,
|
||||
rules: {
|
||||
INSPECTION_ID: [{ required: true, message: '安全环保检查ID不能为空', trigger: 'blur' }]
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getDict()
|
||||
this.getList()
|
||||
this.getTreeData()
|
||||
this.getEditMyInfo()
|
||||
},
|
||||
methods: {
|
||||
/** 获取行数据 Key,用于优化 table 表格的渲染 */
|
||||
getRowKey(row) {
|
||||
return row.INSPECTION_ID
|
||||
},
|
||||
/** 计算出状态值 */
|
||||
translate(id) {
|
||||
for (var i = 0; i < this.statusList.length; i++) {
|
||||
if (this.statusList[i].ID == id) return this.statusList[i].NAME
|
||||
}
|
||||
},
|
||||
/** 获取登录人信息 */
|
||||
getEditMyInfo() {
|
||||
return new Promise((resolve) => {
|
||||
requestFN(
|
||||
'/user/goEditMyInfo',
|
||||
{}
|
||||
).then((data) => {
|
||||
this.loginUserId = data.pd.USER_ID
|
||||
this.loginUserName = data.pd.NAME
|
||||
resolve('ok')
|
||||
}).catch((e) => {
|
||||
|
||||
})
|
||||
})
|
||||
},
|
||||
/** 执行参数搜索 */
|
||||
getQuery() {
|
||||
this.$refs.multipleTable.clearSelection()
|
||||
this.getList()
|
||||
if (this.search.INSPECTION_SUBJECT == '安全') {
|
||||
this.INSPECT_NAME = '安全检查总数:'
|
||||
} else if (this.search.INSPECTION_SUBJECT == '环保') {
|
||||
this.INSPECT_NAME = '环保检查总数:'
|
||||
} else if (this.search.INSPECTION_SUBJECT == '综合') {
|
||||
this.INSPECT_NAME = '综合检查总数:'
|
||||
} else this.INSPECT_NAME = '安全环保总数:'
|
||||
},
|
||||
/** 执行重置 */
|
||||
goKeyReset() {
|
||||
this.resetSearch()
|
||||
this.getQuery()
|
||||
this.$refs.deptTree_Select1.clearHandle()
|
||||
this.$refs.deptTree_Select2.clearHandle()
|
||||
},
|
||||
/** 获取列表 */
|
||||
getList() {
|
||||
this.listLoading = true
|
||||
// requestFN(
|
||||
// '/safetyenvironmental/list?showCount=' + this.listQuery.limit + '¤tPage=' + this.listQuery.page,
|
||||
// {
|
||||
// ...this.search,
|
||||
// INSPECTION_TIME_START: this.search.INSPECTION_TIME[0],
|
||||
// INSPECTION_TIME_END: this.search.INSPECTION_TIME[1]
|
||||
// }
|
||||
// ).then((data) => {
|
||||
// this.listLoading = false
|
||||
// this.varList = data.varList
|
||||
// this.safetyTotal = data.safetyTotal
|
||||
// this.hiddenTotal = data.hiddenTotal
|
||||
// this.total = data.page.totalResult
|
||||
// this.hasButton()
|
||||
// this.pd = data.pd
|
||||
// }).catch((e) => {
|
||||
// this.listLoading = false
|
||||
// })
|
||||
setTimeout(() => {
|
||||
this.listLoading = false
|
||||
this.varList = inspectionList
|
||||
this.total = inspectionList.length
|
||||
}, 400)
|
||||
},
|
||||
/** 新建检查 */
|
||||
handleAdd() {
|
||||
this.$parent.INSPECTION_ID = ''
|
||||
this.$parent.activeName = 'Add'
|
||||
},
|
||||
/** 编辑指定检查项 */
|
||||
handleEdit(ID) {
|
||||
this.$parent.INSPECTION_ID = ID
|
||||
this.$parent.activeName = 'Edit'
|
||||
},
|
||||
/** 查看指定检查项 */
|
||||
goDetail(row) {
|
||||
this.$parent.activeName = 'Info'
|
||||
this.$parent.INSPECTION_ID = row.INSPECTION_ID
|
||||
},
|
||||
/** 开启流程图 */
|
||||
checkFlow(row) {
|
||||
this.$refs.safetyFlowChart.init(row)
|
||||
},
|
||||
/** 申辩处理 */
|
||||
handleExplain(row) {
|
||||
this.resetForm(row)
|
||||
this.form.INSPECTED_SITEUSER_SIGN_IMG = row.INSPECTED_SITEUSER_SIGN_IMG
|
||||
this.form.INSPECTED_SITEUSER_SIGN_TIME = row.INSPECTED_SITEUSER_SIGN_TIME
|
||||
this.form.INSPECTED_EXPLAIN = row.INSPECTED_EXPLAIN
|
||||
this.form.INSPECTED_EXPLAIN_FILENAME = row.INSPECTED_EXPLAIN_FILENAME
|
||||
this.form.INSPECTED_EXPLAIN_FILEPATH = row.INSPECTED_EXPLAIN_FILEPATH
|
||||
this.dialogFormEdit = true
|
||||
},
|
||||
/** 手写板弹框打开 */
|
||||
showModal() {
|
||||
this.dialogWriteSign = true
|
||||
},
|
||||
/** 手写板完成 */
|
||||
subCanvas(img64) {
|
||||
this.form.INSPECTION_ORIGINATOR_SIGN_IMG = img64
|
||||
this.dialogWriteSign = false
|
||||
},
|
||||
/** 表单保存 */
|
||||
confirm() {
|
||||
if (this.form.INSPECTION_STATUS === '-2') {
|
||||
this.$parent.INSPECTION_ID = this.form.INSPECTION_ID
|
||||
this.dialogFormEdit = false
|
||||
this.$parent.activeName = 'Edit'
|
||||
} else {
|
||||
this.$refs.form.validate(valid => {
|
||||
if (valid) {
|
||||
if (this.form.INSPECTION_STATUS === '3') {
|
||||
if (!this.validStr(this.form.INSPECTED_EXPLAIN_REFUSE)) {
|
||||
this.$message.warning('申辩不成立时,不成立理由内容不能为空')
|
||||
return false
|
||||
}
|
||||
if (!this.validStr(this.form.INSPECTION_ORIGINATOR_SIGN_IMG)) {
|
||||
this.$message.warning('请在确认人签字处签字!')
|
||||
return false
|
||||
}
|
||||
}
|
||||
const loading = this.$loading({
|
||||
lock: true,
|
||||
text: '数据保存中...',
|
||||
spinner: 'el-icon-loading',
|
||||
background: 'rgba(0, 0, 0, 0.7)'
|
||||
})
|
||||
this.listLoading = true
|
||||
requestFN(
|
||||
'/safetyenvironmental/explain',
|
||||
{ ...this.form }
|
||||
).then((data) => {
|
||||
this.$message({
|
||||
message: '保存成功',
|
||||
type: 'success'
|
||||
})
|
||||
this.listLoading = false
|
||||
loading.close()
|
||||
this.dialogFormEdit = false
|
||||
this.getQuery()
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
loading.close()
|
||||
})
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
/** 处理删除 */
|
||||
handleDelete(id) {
|
||||
this.$confirm('确定要删除吗?', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.listLoading = true
|
||||
requestFN(
|
||||
'/safetyenvironmental/hide',
|
||||
{
|
||||
INSPECTION_ID: id,
|
||||
hide: '1'
|
||||
}
|
||||
).then(() => {
|
||||
this.$message({
|
||||
message: '删除成功',
|
||||
type: 'success'
|
||||
})
|
||||
this.listLoading = false
|
||||
this.varList = []
|
||||
this.listQuery.page = 1
|
||||
this.getList()
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
}).catch(() => {
|
||||
})
|
||||
},
|
||||
/** 批量删除 */
|
||||
batchDel() {
|
||||
const _selectData = this.$refs.multipleTable.selection
|
||||
if (_selectData == null || _selectData.length == 0) {
|
||||
this.$message({
|
||||
message: '请选中要删除的项...',
|
||||
type: 'error'
|
||||
})
|
||||
return false
|
||||
}
|
||||
const ids = _selectData.map((item, index) => {
|
||||
return item.INSPECTION_ID
|
||||
}).join(',')
|
||||
|
||||
this.$confirm('确定要删除选中的数据吗?', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.listLoading = true
|
||||
requestFN(
|
||||
'/safetyenvironmental/deleteAll',
|
||||
{
|
||||
DATA_IDS: ids
|
||||
}
|
||||
).then(() => {
|
||||
this.$message({
|
||||
message: '删除成功',
|
||||
type: 'success'
|
||||
})
|
||||
this.listLoading = false
|
||||
this.varList = []
|
||||
this.listQuery.page = 1
|
||||
this.$refs.multipleTable.clearSelection()
|
||||
this.getList()
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
}).catch(() => {
|
||||
})
|
||||
},
|
||||
/** 判断按钮权限,用于是否显示按钮 */
|
||||
hasButton() {
|
||||
var keys = 'safetyenvironmental:add,safetyenvironmental:del,safetyenvironmental:edit,toExcel'
|
||||
requestFN(
|
||||
'/head/hasButton',
|
||||
{
|
||||
keys: keys
|
||||
}
|
||||
).then((data) => {
|
||||
this.add = data.safetyenvironmentalfhadminadd // 新增权限
|
||||
this.del = data.safetyenvironmentalfhadmindel // 删除权限
|
||||
this.edit = data.safetyenvironmentalfhadminedit // 修改权限
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
},
|
||||
/** 获取数据字典数据 */
|
||||
getDict() {
|
||||
requestFN(
|
||||
'/dictionaries/listSelectTree',
|
||||
{
|
||||
DICTIONARIES_ID: '60e6481d96e44a5390ff5c347c4d1ffe' // 检查类型
|
||||
}
|
||||
).then((data) => {
|
||||
this.inspectionTypeList = JSON.parse(data.zTreeNodes)
|
||||
}).catch((e) => {
|
||||
|
||||
})
|
||||
},
|
||||
/** 获得部门树 */
|
||||
getTreeData() {
|
||||
requestFN(
|
||||
'/department/listTree',
|
||||
{}
|
||||
).then((data) => {
|
||||
this.treeData = JSON.parse(data.zTreeNodes)
|
||||
}).catch((e) => {
|
||||
})
|
||||
},
|
||||
/** 重置搜索状态 */
|
||||
resetSearch() {
|
||||
this.search = {
|
||||
HIDDENDESCR: '',
|
||||
INSPECTED_DEPARTMENT_NAME: '', // 被检查单位
|
||||
INSPECTION_DEPARTMENT_NAME: '', // 检查部门
|
||||
INSPECTION_ORIGINATOR_NAME: '', // 检查发起人
|
||||
INSPECTION_TYPE: '', // 检查类型
|
||||
INSPECTION_TIME: ['', ''], // 检查时间
|
||||
INSPECTION_STATUS: '', // 检查状态
|
||||
INSPECTION_SUBJECT: '' // 检查题目
|
||||
}
|
||||
this.$refs.tree_InspectionType.clearHandle()
|
||||
},
|
||||
/** 重置表单数据 */
|
||||
resetForm(row) {
|
||||
this.form = {
|
||||
INSPECTION_STATUS: '3',
|
||||
INSPECTION_ID: row.INSPECTION_ID, // 安全环保检查ID
|
||||
INSPECTED_EXPLAIN_REFUSE: '', // 申辩内容
|
||||
INSPECTION_ORIGINATOR_SIGN_IMG: '' // 被检查单位现场负责人签字
|
||||
// INSPECTION_ORIGINATOR_SIGN_TIME: '', // 被检查单位现场负责人签字时间
|
||||
}
|
||||
},
|
||||
/** 下载文件 */
|
||||
downloadFile(INSPECTION_ID) {
|
||||
this.$confirm('确定要下载此文件吗?', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.listLoading = false
|
||||
window.location.href = config.httpurl + 'safetyenvironmental/download?INSPECTION_ID=' + INSPECTION_ID
|
||||
}).catch(() => {
|
||||
this.listLoading = false
|
||||
})
|
||||
this.listLoading = false
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
<template>
|
||||
<div>
|
||||
<List v-show="activeName === 'List'" ref="list" />
|
||||
<Add v-if="activeName === 'Add'" />
|
||||
<Edit v-if="activeName === 'Edit'" />
|
||||
<Info v-if="activeName === 'Info'" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import List from './components/list'
|
||||
import Add from './components/add'
|
||||
import Edit from './components/edit'
|
||||
import Info from '../archive/components/info'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
List,
|
||||
Add,
|
||||
Edit,
|
||||
Info
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
activeName: 'List',
|
||||
INSPECTION_ID: ''
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
activeName(newValue, oldValue) {
|
||||
if (newValue == 'List') {
|
||||
this.$refs.list.getQuery()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="sss" scoped></style>
|
||||
|
|
@ -0,0 +1,56 @@
|
|||
export const inspectorList = [
|
||||
{
|
||||
INSPECTION_USER_ID: 'df57edb0fc1f48a59e2696f5fa4105c7',
|
||||
OPERATTIME: '2023-12-28 16:38:21',
|
||||
ISDELETE: '0',
|
||||
INSPECTED_DEPARTMENT_ID: '035958e685cf4850bc40151c5e0617a6',
|
||||
INSPECTION_TYPE_NAME: '月度安全检查',
|
||||
INSPECTION_TIME_START: '2023-12-30 00:00',
|
||||
INSPECTED_DEPARTMENT_NAME: '秦港股份一公司',
|
||||
CORPINFO_ID: '035958e685cf4850bc40151c5e0617a6',
|
||||
INSPECTION_ORIGINATOR_NAME: '秦港股份一公司',
|
||||
INSPECTION_USER_OPINION: '123',
|
||||
INSPECTION_TIME_END: '2023-12-27 00:00',
|
||||
INSPECTION_SUBJECT: '环保',
|
||||
INSPECTION_USER_SIGN_IMG:
|
||||
'/uploadFiles/file/035958e685cf4850bc40151c5e0617a6/20231228/3bbf17751b8547439c876e8d85fd0ac6.png',
|
||||
INSPECTION_STATUS: '2',
|
||||
INSPECTION_ID: '34c2e205e1c648d192f64afb006763cc',
|
||||
OPERATOR: 'df57edb0fc1f48a59e2696f5fa4105c7',
|
||||
INSPECTED_DEPARTMENT_NAMES: '秦港股份一公司',
|
||||
INSPECTED_SITEUSER_NAME: '秦港股份一公司',
|
||||
CREATOR: 'df57edb0fc1f48a59e2696f5fa4105c7',
|
||||
INSPECTION_INSPECTOR_ID: '84e2ee1f86e44e39a32efc23fa21654e',
|
||||
INSPECTION_DEPARTMENT_NAME: '秦港股份一公司',
|
||||
INSPECTION_USER_SIGN_TIME: '2023-12-28 16:37',
|
||||
INSPECTION_USER_NAME: '测试账号,秦港股份一公司',
|
||||
CREATTIME: '2023-12-28 16:38:21'
|
||||
},
|
||||
{
|
||||
INSPECTION_USER_ID: 'df57edb0fc1f48a59e2696f5fa4105c7',
|
||||
OPERATTIME: '2023-12-28 16:41:37',
|
||||
ISDELETE: '0',
|
||||
INSPECTED_DEPARTMENT_ID: '035958e685cf4850bc40151c5e0617a6',
|
||||
INSPECTION_TYPE_NAME: '月度安全检查',
|
||||
INSPECTION_TIME_START: '2023-12-28 16:40',
|
||||
INSPECTED_DEPARTMENT_NAME: '秦港股份一公司',
|
||||
CORPINFO_ID: '035958e685cf4850bc40151c5e0617a6',
|
||||
INSPECTION_ORIGINATOR_NAME: '秦港股份一公司',
|
||||
INSPECTION_USER_OPINION: '123',
|
||||
INSPECTION_TIME_END: '2023-12-30 00:00',
|
||||
INSPECTION_SUBJECT: '环保',
|
||||
INSPECTION_USER_SIGN_IMG:
|
||||
'/uploadFiles/file/035958e685cf4850bc40151c5e0617a6/20231228/422ded04f0b148a6854162f02f58eefb.png',
|
||||
INSPECTION_STATUS: '8',
|
||||
INSPECTION_ID: '5f27862c864f48759cd7499afea44f10',
|
||||
OPERATOR: 'df57edb0fc1f48a59e2696f5fa4105c7',
|
||||
INSPECTED_DEPARTMENT_NAMES: '秦港股份一公司',
|
||||
INSPECTED_SITEUSER_NAME: '秦港股份一公司',
|
||||
CREATOR: 'df57edb0fc1f48a59e2696f5fa4105c7',
|
||||
INSPECTION_INSPECTOR_ID: '179f5475f4c34af285ab1f180b2e6bee',
|
||||
INSPECTION_DEPARTMENT_NAME: '秦港股份一公司',
|
||||
INSPECTION_USER_SIGN_TIME: '2023-12-28 16:40',
|
||||
INSPECTION_USER_NAME: '测试账号,秦港股份一公司',
|
||||
CREATTIME: '2023-12-28 16:41:37'
|
||||
}
|
||||
]
|
||||
|
|
@ -0,0 +1,400 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
<el-form label-width="100px">
|
||||
<el-row>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="被检查单位">
|
||||
<el-input v-model="search.INSPECTED_DEPARTMENT_NAME" placeholder="被检查单位..." />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="检查部门">
|
||||
<el-input v-model="search.INSPECTION_DEPARTMENT_NAME" placeholder="检查部门..." />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="检查发起人">
|
||||
<el-input v-model="search.INSPECTION_ORIGINATOR_NAME" placeholder="检查发起人..." />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="检查类型">
|
||||
<SelectTree
|
||||
ref="tree_InspectionType"
|
||||
:clearable="false"
|
||||
:options="inspectionTypeList"
|
||||
:props="defaultProps"
|
||||
v-model="search.INSPECTION_TYPE"
|
||||
:canparent="false"
|
||||
placeholder="这里选择检查类型..."
|
||||
children-name="nodes" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="检查时间">
|
||||
<el-date-picker
|
||||
v-model="search.INSPECTION_TIME"
|
||||
style="width: 100%;"
|
||||
type="daterange"
|
||||
value-format="yyyy-MM-dd"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="检查状态">
|
||||
<el-select v-model="search.INSPECTION_STATUS" placeholder="检查状态" clearable style="width: 100%">
|
||||
<el-option v-for="item in inspectionStatusList" :key="item.ID" :label="item.NAME" :value="item.ID" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="检查题目">
|
||||
<el-select v-model="search.INSPECTION_SUBJECT" placeholder="检查题目" clearable style="width: 100%">
|
||||
<el-option v-for="item in INSPECTION_SUBJECT_LIST" :key="item.ID" :label="item.NAME" :value="item.ID" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label-width="10px">
|
||||
<el-button v-waves type="primary" icon="el-icon-search" @click="getQuery">
|
||||
搜索
|
||||
</el-button>
|
||||
<el-button v-waves type="success" icon="el-icon-refresh" @click="goKeyReset">
|
||||
重置
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<el-table
|
||||
v-loading="listLoading"
|
||||
ref="multipleTable"
|
||||
:data="varList"
|
||||
:row-key="getRowKey"
|
||||
:header-cell-style="{
|
||||
'font-weight': 'bold',
|
||||
'color': '#000'
|
||||
}"
|
||||
tooltip-effect="dark"
|
||||
border
|
||||
fit
|
||||
highlight-current-row
|
||||
>
|
||||
<el-table-column
|
||||
:reserve-selection="true"
|
||||
type="selection"
|
||||
width="55"
|
||||
align="center"/>
|
||||
<el-table-column type="index" label="序号" width="50" align="center" fiexd="left" />
|
||||
<el-table-column prop="INSPECTED_DEPARTMENT_NAMES" show-overflow-tooltip label="被检查单位" align="center" />
|
||||
<el-table-column prop="INSPECTION_DEPARTMENT_NAME" show-overflow-tooltip label="检查部门" align="center" />
|
||||
<el-table-column prop="INSPECTION_ORIGINATOR_NAME" show-overflow-tooltip label="检查发起人" align="center" />
|
||||
<el-table-column prop="INSPECTION_TYPE_NAME" show-overflow-tooltip label="检查类型" width="150" align="center" />
|
||||
<el-table-column label="检查时间" width="280" show-overflow-tooltip align="center" >
|
||||
<template slot-scope="{row}">
|
||||
<span>自 {{ row.INSPECTION_TIME_START }} 至 {{ row.INSPECTION_TIME_END }} 止</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="INSPECTION_STATUS" show-overflow-tooltip label="状态" width="150" align="center" >
|
||||
<template slot-scope="{row}">
|
||||
<template v-if="row.INSPECTION_STATUS == '0'">待检查人核实</template>
|
||||
<template v-else-if="row.INSPECTION_STATUS == '1'">检查人核实中</template>
|
||||
<template v-else-if="row.INSPECTION_STATUS == '2'">待被检查人确认</template>
|
||||
<template v-else-if="row.INSPECTION_STATUS == '3'">已归档</template>
|
||||
<template v-else-if="row.INSPECTION_STATUS == '4'">指派中</template>
|
||||
<template v-else-if="row.INSPECTION_STATUS == '5'">指派完成</template>
|
||||
<template v-else-if="row.INSPECTION_STATUS == '6'">待验收</template>
|
||||
<template v-else-if="row.INSPECTION_STATUS == '7'">检查已验收</template>
|
||||
<template v-else-if="row.INSPECTION_STATUS == '8'">已归档</template>
|
||||
<template v-else-if="row.INSPECTION_STATUS == '-1'">检查人核实打回</template>
|
||||
<template v-else-if="row.INSPECTION_STATUS == '-2'">被检查人申辩</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="INSPECTION_SUBJECT" show-overflow-tooltip label="检查题目" width="130" align="center" />
|
||||
<el-table-column label="操作" align="center" width="200" fiexd="right">
|
||||
<template slot-scope="{row}">
|
||||
<el-button icon="el-icon-view" size="mini" @click="goDetail(row)">查看</el-button>
|
||||
<el-button
|
||||
v-show="edit && !validStr(row.INSPECTION_USER_SIGN_TIME) && (row.INSPECTION_STATUS == '0' || row.INSPECTION_STATUS == '1')"
|
||||
type="primary"
|
||||
icon="el-icon-edit"
|
||||
size="mini"
|
||||
@click="handleVerify(row)">核实</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div class="page-btn-group">
|
||||
<div/>
|
||||
<pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList" />
|
||||
</div>
|
||||
|
||||
<el-dialog :visible.sync="dialogFormEdit" title="检查核实" width="600px">
|
||||
<el-form ref="form" :rules="rules" :model="form" label-width="110px" style="width: 500px;">
|
||||
<el-form-item label="检查人意见" prop="INSPECTION_USER_OPINION">
|
||||
<el-input v-model="form.INSPECTION_USER_OPINION" :autosize="{ minRows: 1}" type="textarea" maxlength="2000" placeholder="这里输入检查人意见(有异议时必填)..." title="检查人意见(有异议时必填)"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="检查人">
|
||||
<el-button data-target="Modal" type="primary" @click="showModal">手写签字</el-button>
|
||||
</el-form-item>
|
||||
<div v-show="form.INSPECTION_USER_SIGN_IMG != ''" class="demo-image__preview">
|
||||
<el-image
|
||||
:src="form.INSPECTION_USER_SIGN_IMG"
|
||||
style="width: 300px; height: 200px;border:1px solid #eee;margin-left:110px"/>
|
||||
</div>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="dialogFormEdit = false">取 消</el-button>
|
||||
<el-button type="danger" @click="confirm('-1')">不通过</el-button>
|
||||
<el-button type="primary" @click="confirm('1')">通 过</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog :visible.sync="dialogWriteSign" title="手写签字" width="600px" @close="dialogWriteSign = false">
|
||||
<WriteSign :width="600" :height="300" @subCanvas="subCanvas"/>
|
||||
</el-dialog>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import Pagination from '@/components/Pagination' // 通过 el-pagination二次打包
|
||||
import { requestFN } from '@/utils/request'
|
||||
import WriteSign from '@/components/WriteSign'
|
||||
import waves from '@/directive/waves' // waves directive
|
||||
import formatDate from '@/utils/dateformat'
|
||||
import SelectTree from '@/components/SelectTree'
|
||||
import { inspectorList } from '../Mock'
|
||||
|
||||
export default {
|
||||
components: { Pagination, WriteSign, SelectTree },
|
||||
directives: { waves },
|
||||
data() {
|
||||
return {
|
||||
listLoading: true,
|
||||
add: false,
|
||||
del: false,
|
||||
edit: false,
|
||||
listQuery: {
|
||||
page: 1,
|
||||
limit: 20
|
||||
},
|
||||
total: 0,
|
||||
search: {
|
||||
INSPECTED_DEPARTMENT_NAME: '', // 被检查单位
|
||||
INSPECTION_DEPARTMENT_NAME: '', // 检查部门
|
||||
INSPECTION_ORIGINATOR_NAME: '', // 检查发起人
|
||||
INSPECTION_TYPE: '', // 检查类型
|
||||
INSPECTION_SUBJECT: '', // 检查题目
|
||||
INSPECTION_TIME: ['', ''], // 检查时间
|
||||
INSPECTION_STATUS: '' // 检查状态
|
||||
},
|
||||
inspectionTypeList: [],
|
||||
varList: [],
|
||||
form: {
|
||||
INSPECTION_INSPECTOR_ID: '', // 安全环保检查人员主键ID
|
||||
INSPECTION_ID: '', // 安全环保检查ID
|
||||
INSPECTION_USER_ID: '', // 检查人
|
||||
INSPECTION_USER_OPINION: '', // 检查人意见(有异议时必填)
|
||||
INSPECTION_USER_SIGN_IMG: '', // 检查人签字
|
||||
INSPECTION_USER_SIGN_TIME: ''// 检查人签字时间
|
||||
},
|
||||
dialogFormEdit: false,
|
||||
rules: {
|
||||
INSPECTION_ID: [{ required: true, message: '安全环保检查ID不能为空', trigger: 'blur' }],
|
||||
INSPECTION_USER_ID: [{ required: true, message: '检查人不能为空', trigger: 'blur' }]
|
||||
},
|
||||
dialogWriteSign: false,
|
||||
inspectionStatusList: [
|
||||
{ ID: '0', NAME: '待检查人核实' },
|
||||
{ ID: '1', NAME: '检查人核实中' },
|
||||
{ ID: '2', NAME: '待被检查人确认' },
|
||||
{ ID: '3', NAME: '待指派' },
|
||||
{ ID: '4', NAME: '指派中' },
|
||||
{ ID: '5', NAME: '指派完成' },
|
||||
{ ID: '6', NAME: '待验收' },
|
||||
{ ID: '7', NAME: '已验收' },
|
||||
{ ID: '8', NAME: '已归档' },
|
||||
{ ID: '-1', NAME: '检查人核实打回' },
|
||||
{ ID: '-2', NAME: '被检查人申辩' }
|
||||
],
|
||||
INSPECTION_SUBJECT_LIST: [
|
||||
{ ID: '安全', NAME: '安全' },
|
||||
{ ID: '环保', NAME: '环保' },
|
||||
{ ID: '综合', NAME: '综合' }
|
||||
],
|
||||
defaultProps: { value: 'id', children: 'nodes', label: 'name' }
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getDict()
|
||||
this.getList(this.ROLE_ID)
|
||||
},
|
||||
methods: {
|
||||
getRowKey(row) {
|
||||
return row.INSPECTION_ID
|
||||
},
|
||||
// 搜索
|
||||
getQuery() {
|
||||
this.$refs.multipleTable.clearSelection()
|
||||
this.getList()
|
||||
},
|
||||
goKeyReset() {
|
||||
this.resetSearch()
|
||||
this.getQuery()
|
||||
},
|
||||
// 获取列表
|
||||
getList() {
|
||||
this.listLoading = true
|
||||
// requestFN(
|
||||
// '/safetyenvironmentalinspector/list?showCount=' + this.listQuery.limit + '¤tPage=' + this.listQuery.page,
|
||||
// {
|
||||
// ...this.search,
|
||||
// INSPECTION_TIME_START: this.search.INSPECTION_TIME[0],
|
||||
// INSPECTION_TIME_END: this.search.INSPECTION_TIME[1]
|
||||
// }
|
||||
// ).then((data) => {
|
||||
// this.listLoading = false
|
||||
// this.varList = data.varList
|
||||
// this.total = data.page.totalResult
|
||||
// this.hasButton()
|
||||
// this.pd = data.pd
|
||||
// }).catch((e) => {
|
||||
// this.listLoading = false
|
||||
// })
|
||||
|
||||
setTimeout(() => {
|
||||
this.varList = inspectorList
|
||||
this.total = inspectorList.length
|
||||
this.listLoading = false
|
||||
}, 400)
|
||||
},
|
||||
// 查看
|
||||
goDetail(row) {
|
||||
this.$parent.activeName = 'InspectionInfo'
|
||||
this.$parent.INSPECTION_ID = row.INSPECTION_ID
|
||||
},
|
||||
// 修改
|
||||
handleVerify(row) {
|
||||
this.resetForm(row)
|
||||
this.dialogFormEdit = true
|
||||
},
|
||||
/** 手写板*/
|
||||
showModal() {
|
||||
this.dialogWriteSign = true
|
||||
},
|
||||
// 完成
|
||||
subCanvas(img64) {
|
||||
console.info('img64:' + img64)
|
||||
this.form.INSPECTION_USER_SIGN_IMG = img64
|
||||
this.$set(this.form, 'INSPECTION_USER_SIGN_TIME', formatDate(new Date(), 'YYYY-MM-DD HH:mm'))
|
||||
console.info(this.form)
|
||||
this.dialogWriteSign = false
|
||||
},
|
||||
|
||||
// 保存
|
||||
confirm(INSPECTION_STATUS) {
|
||||
this.$refs.form.validate(valid => {
|
||||
if (valid) {
|
||||
if (INSPECTION_STATUS === '-1') {
|
||||
if (!this.validStr(this.form.INSPECTION_USER_OPINION)) {
|
||||
this.$message.warning('有异议时,检查人意见不能为空')
|
||||
return false
|
||||
}
|
||||
}
|
||||
if (!this.validStr(this.form.INSPECTION_USER_SIGN_IMG)) {
|
||||
this.$message.warning('请在检查人签字处签字!')
|
||||
return false
|
||||
}
|
||||
const loading = this.$loading({
|
||||
lock: true,
|
||||
text: '数据保存中...',
|
||||
spinner: 'el-icon-loading',
|
||||
background: 'rgba(0, 0, 0, 0.7)'
|
||||
})
|
||||
this.listLoading = true
|
||||
requestFN(
|
||||
'/safetyenvironmentalinspector/verify',
|
||||
{ ...this.form,
|
||||
INSPECTION_STATUS: INSPECTION_STATUS
|
||||
}
|
||||
).then((data) => {
|
||||
this.$message({
|
||||
message: '保存成功',
|
||||
type: 'success'
|
||||
})
|
||||
this.listLoading = false
|
||||
loading.close()
|
||||
this.dialogFormEdit = false
|
||||
this.getQuery()
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
loading.close()
|
||||
})
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
// 判断按钮权限,用于是否显示按钮
|
||||
hasButton: function() {
|
||||
var keys = 'safetyenvironmentalinspector:add,safetyenvironmentalinspector:del,safetyenvironmentalinspector:edit,toExcel'
|
||||
requestFN(
|
||||
'/head/hasButton',
|
||||
{
|
||||
keys: keys
|
||||
}
|
||||
).then((data) => {
|
||||
this.add = data.safetyenvironmentalinspectorfhadminadd // 新增权限
|
||||
this.del = data.safetyenvironmentalinspectorfhadmindel // 删除权限
|
||||
this.edit = data.safetyenvironmentalinspectorfhadminedit // 修改权限
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
},
|
||||
// 获取数据字典数据
|
||||
getDict: function() {
|
||||
requestFN(
|
||||
'/dictionaries/listSelectTree',
|
||||
{
|
||||
DICTIONARIES_ID: '60e6481d96e44a5390ff5c347c4d1ffe' // 检查类型
|
||||
}
|
||||
).then((data) => {
|
||||
this.inspectionTypeList = JSON.parse(data.zTreeNodes)
|
||||
}).catch((e) => {
|
||||
|
||||
})
|
||||
},
|
||||
resetSearch() {
|
||||
this.search = {
|
||||
INSPECTED_DEPARTMENT_NAME: '', // 被检查单位
|
||||
INSPECTION_DEPARTMENT_NAME: '', // 检查部门
|
||||
INSPECTION_ORIGINATOR_NAME: '', // 检查发起人
|
||||
INSPECTION_TYPE: '', // 检查类型
|
||||
INSPECTION_SUBJECT: '', // 检查题目
|
||||
INSPECTION_TIME: ['', ''], // 检查时间
|
||||
INSPECTION_STATUS: '' // 检查状态
|
||||
}
|
||||
this.$refs.tree_InspectionType.clearHandle()
|
||||
},
|
||||
resetForm(row) {
|
||||
console.log(row)
|
||||
this.form = {
|
||||
INSPECTION_INSPECTOR_ID: row.INSPECTION_INSPECTOR_ID, // 安全环保检查人员主键ID
|
||||
INSPECTION_ID: row.INSPECTION_ID, // 安全环保检查ID
|
||||
INSPECTION_USER_ID: row.INSPECTION_USER_ID, // 检查人
|
||||
INSPECTION_USER_OPINION: '', // 检查人意见(有异议时必填)
|
||||
INSPECTION_USER_SIGN_IMG: '', // 检查人签字
|
||||
INSPECTION_USER_SIGN_TIME: ''// 检查人签字时间
|
||||
}
|
||||
},
|
||||
formatDate(date, format) {
|
||||
return formatDate(date, format)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
<template>
|
||||
<div>
|
||||
<List v-show="activeName==='List'" ref="list" />
|
||||
<InspectionInfo v-if="activeName==='InspectionInfo'" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import List from './components/list'
|
||||
import InspectionInfo from '../inspection/components/info'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
List,
|
||||
InspectionInfo
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
activeName: 'List',
|
||||
INSPECTION_ID: ''
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
activeName(newValue, oldValue) {
|
||||
if (newValue == 'List') {
|
||||
this.$refs.list.getQuery()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
|
|
@ -0,0 +1,375 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
<el-form label-width="100px">
|
||||
<el-row>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="被检查单位:">
|
||||
<el-input v-model="search.INSPECTED_DEPARTMENT_NAME" style="width: 140px;" placeholder="被检查单位..." />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="检查部门:">
|
||||
<el-input v-model="search.INSPECTION_DEPARTMENT_NAME" style="width: 140px;" placeholder="检查部门..." />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="检查发起人:">
|
||||
<el-input v-model="search.INSPECTION_ORIGINATOR_NAME" style="width: 140px;" placeholder="检查发起人..." />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="检查类型:">
|
||||
<el-select v-model="search.INSPECTION_TYPE" placeholder="检查类型..." clearable style="width: 100px" class="filter-item">
|
||||
<el-option v-for="item in inspectionTypeList" :key="item.BIANMA" :label="item.NAME" :value="item.BIANMA" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="检查时间:">
|
||||
<el-date-picker
|
||||
v-model="search.INSPECTION_TIME"
|
||||
type="daterange"
|
||||
value-format="yyyy-MM-dd"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
class="filter-item"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="检查状态:">
|
||||
<el-select v-model="search.INSPECTION_STATUS" placeholder="检查状态" clearable style="width: 110px" class="filter-item">
|
||||
<el-option v-for="item in statusList" :key="item.ID" :label="item.NAME" :value="item.ID" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label-width="10px">
|
||||
<el-button v-waves class="filter-item" type="primary" icon="el-icon-search" @click="getQuery">
|
||||
搜索
|
||||
</el-button>
|
||||
<el-button v-waves class="filter-item" type="success" icon="el-icon-refresh" @click="goKeyReset">
|
||||
重置
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
|
||||
<el-table
|
||||
v-loading="listLoading"
|
||||
ref="multipleTable"
|
||||
:data="varList"
|
||||
:row-key="getRowKey"
|
||||
:header-cell-style="{
|
||||
'font-weight': 'bold',
|
||||
'color': '#000'
|
||||
}"
|
||||
tooltip-effect="dark"
|
||||
border
|
||||
fit
|
||||
highlight-current-row
|
||||
>
|
||||
<el-table-column
|
||||
:reserve-selection="true"
|
||||
type="selection"
|
||||
width="55"
|
||||
align="center"/>
|
||||
<el-table-column type="index" label="序号" width="50" align="center" />
|
||||
<el-table-column prop="INSPECTED_DEPARTMENT_NAMES" label="被检查单位" align="center" />
|
||||
<el-table-column prop="INSPECTION_DEPARTMENT_NAME" label="检查部门" align="center" />
|
||||
<el-table-column prop="INSPECTION_ORIGINATOR_NAME" label="检查发起人" align="center" />
|
||||
<el-table-column prop="INSPECTION_TYPE_NAME" label="检查类型" align="center" />
|
||||
<el-table-column label="检查时间" width="260" align="center" >
|
||||
<template slot-scope="{row}">
|
||||
<span>自 {{ row.INSPECTION_TIME_START }} 至 {{ row.INSPECTION_TIME_END }} 止</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="INSPECTION_STATUS" label="状态" align="center" >
|
||||
<template slot-scope="{row}">
|
||||
<template v-if="row.INSPECTION_STATUS == '0'">待检查人核实</template>
|
||||
<template v-else-if="row.INSPECTION_STATUS == '1'">检查人核实中</template>
|
||||
<template v-else-if="row.INSPECTION_STATUS == '2'">待被检查人确认</template>
|
||||
<template v-else-if="row.INSPECTION_STATUS == '3'">待指派</template>
|
||||
<template v-else-if="row.INSPECTION_STATUS == '4'">指派中</template>
|
||||
<template v-else-if="row.INSPECTION_STATUS == '5'">指派完成</template>
|
||||
<template v-else-if="row.INSPECTION_STATUS == '6'">检查待验收</template>
|
||||
<template v-else-if="row.INSPECTION_STATUS == '7'">检查已验收</template>
|
||||
<template v-else-if="row.INSPECTION_STATUS == '8'">已归档</template>
|
||||
<template v-else-if="row.INSPECTION_STATUS == '-1'">检查人核实打回</template>
|
||||
<template v-else-if="row.INSPECTION_STATUS == '-2'">被检查人申辩</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" width="200">
|
||||
<template slot-scope="{row}">
|
||||
<el-button icon="el-icon-view" size="mini" @click="goDetail(row)">查看</el-button>
|
||||
<el-button type="primary" @click="openTrajectory(row.INSPECTION_ID)">申辩记录</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div class="page-btn-group">
|
||||
<div/>
|
||||
<pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList" />
|
||||
</div>
|
||||
|
||||
<el-dialog :visible.sync="dialogFormEdit" title="检查核实" width="600px">
|
||||
<el-form ref="form" :rules="rules" :model="form" label-width="110px" style="width: 500px;">
|
||||
<el-form-item label="检查人意见" prop="INSPECTION_USER_OPINION">
|
||||
<el-input v-model="form.INSPECTION_USER_OPINION" :autosize="{ minRows: 1}" type="textarea" maxlength="2000" placeholder="这里输入检查人意见(有异议时必填)..." title="检查人意见(有异议时必填)"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="检查人">
|
||||
<el-button data-target="Modal" type="primary" @click="showModal">手写签字</el-button>
|
||||
</el-form-item>
|
||||
<div v-show="form.INSPECTION_USER_SIGN_IMG != ''" class="demo-image__preview">
|
||||
<el-image
|
||||
:src="form.INSPECTION_USER_SIGN_IMG"
|
||||
style="width: 300px; height: 200px;border:1px solid #eee;margin-left:110px"/>
|
||||
</div>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="danger" @click="confirm('-1')">不通过</el-button>
|
||||
<el-button @click="dialogFormEdit = false">取 消</el-button>
|
||||
<el-button type="primary" @click="confirm('1')">通 过</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog :visible.sync="dialogWriteSign" title="手写签字" width="600px" @close="dialogWriteSign = false">
|
||||
<WriteSign :width="600" :height="300" @subCanvas="subCanvas"/>
|
||||
</el-dialog>
|
||||
|
||||
<trajectory ref="trakectory"/>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import Pagination from '@/components/Pagination' // 通过 el-pagination二次打包
|
||||
import { requestFN } from '@/utils/request'
|
||||
import WriteSign from '@/components/WriteSign'
|
||||
import waves from '@/directive/waves' // waves directive
|
||||
import formatDate from '@/utils/dateformat'
|
||||
import trajectory from './trajectory'
|
||||
export default {
|
||||
components: { Pagination, WriteSign, trajectory },
|
||||
directives: { waves },
|
||||
data() {
|
||||
return {
|
||||
listLoading: true,
|
||||
add: false,
|
||||
del: false,
|
||||
edit: false,
|
||||
listQuery: {
|
||||
page: 1,
|
||||
limit: 20
|
||||
},
|
||||
total: 0,
|
||||
search: {
|
||||
INSPECTED_DEPARTMENT_NAME: '', // 被检查单位
|
||||
INSPECTION_DEPARTMENT_NAME: '', // 检查部门
|
||||
INSPECTION_ORIGINATOR_NAME: '', // 检查发起人
|
||||
INSPECTION_TYPE: '', // 检查类型
|
||||
INSPECTION_TIME: ['', ''], // 检查时间
|
||||
INSPECTION_STATUS: '' // 检查状态
|
||||
},
|
||||
statusList: [
|
||||
{ ID: '0', NAME: '待检查人核实' },
|
||||
{ ID: '1', NAME: '检查人核实中' },
|
||||
{ ID: '2', NAME: '待被检查人确认' },
|
||||
{ ID: '3', NAME: '待指派' },
|
||||
{ ID: '4', NAME: '指派中' },
|
||||
{ ID: '5', NAME: '指派完成' },
|
||||
{ ID: '6', NAME: '检查待验收' },
|
||||
{ ID: '7', NAME: '检查已验收' },
|
||||
{ ID: '8', NAME: '已归档' },
|
||||
{ ID: '-1', NAME: '检查人核实打回' },
|
||||
{ ID: '-2', NAME: '被检查人申辩' }
|
||||
],
|
||||
inspectionTypeList: [],
|
||||
varList: [],
|
||||
form: {
|
||||
INSPECTION_INSPECTOR_ID: '', // 安全环保检查人员主键ID
|
||||
INSPECTION_ID: '', // 安全环保检查ID
|
||||
INSPECTION_USER_ID: '', // 检查人
|
||||
INSPECTION_USER_OPINION: '', // 检查人意见(有异议时必填)
|
||||
INSPECTION_USER_SIGN_IMG: '', // 检查人签字
|
||||
INSPECTION_USER_SIGN_TIME: ''// 检查人签字时间
|
||||
},
|
||||
dialogFormEdit: false,
|
||||
rules: {
|
||||
INSPECTION_ID: [{ required: true, message: '安全环保检查ID不能为空', trigger: 'blur' }],
|
||||
INSPECTION_USER_ID: [{ required: true, message: '检查人不能为空', trigger: 'blur' }]
|
||||
},
|
||||
dialogWriteSign: false
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getDict()
|
||||
this.getList(this.ROLE_ID)
|
||||
},
|
||||
methods: {
|
||||
getRowKey(row) {
|
||||
return row.INSPECTION_ID
|
||||
},
|
||||
// 搜索
|
||||
getQuery() {
|
||||
this.$refs.multipleTable.clearSelection()
|
||||
this.getList()
|
||||
},
|
||||
goKeyReset() {
|
||||
this.resetSearch()
|
||||
this.getQuery()
|
||||
},
|
||||
// 获取列表
|
||||
getList() {
|
||||
this.listLoading = true
|
||||
// requestFN(
|
||||
// '/safetyenvironmental/pleadList?showCount=' + this.listQuery.limit + '¤tPage=' + this.listQuery.page,
|
||||
// {
|
||||
// ...this.search,
|
||||
// INSPECTION_TIME_START: this.search.INSPECTION_TIME[0],
|
||||
// INSPECTION_TIME_END: this.search.INSPECTION_TIME[1]
|
||||
// }
|
||||
// ).then((data) => {
|
||||
// this.listLoading = false
|
||||
// this.varList = data.varList
|
||||
// this.total = data.page.totalResult
|
||||
// this.hasButton()
|
||||
// this.pd = data.pd
|
||||
// }).catch((e) => {
|
||||
// this.listLoading = false
|
||||
// })
|
||||
|
||||
setTimeout(() => {
|
||||
this.listLoading = false
|
||||
this.varList = []
|
||||
this.total = 0
|
||||
}, 400)
|
||||
},
|
||||
// 查看
|
||||
goDetail(row) {
|
||||
this.$parent.activeName = 'InspectionInfo'
|
||||
this.$parent.INSPECTION_ID = row.INSPECTION_ID
|
||||
},
|
||||
// 修改
|
||||
handleVerify(row) {
|
||||
this.resetForm(row)
|
||||
this.dialogFormEdit = true
|
||||
},
|
||||
/** 手写板*/
|
||||
showModal() {
|
||||
this.dialogWriteSign = true
|
||||
},
|
||||
// 完成
|
||||
subCanvas(img64) {
|
||||
console.info('img64:' + img64)
|
||||
this.form.INSPECTION_USER_SIGN_IMG = img64
|
||||
this.$set(this.form, 'INSPECTION_USER_SIGN_TIME', formatDate(new Date(), 'YYYY-MM-DD HH:mm'))
|
||||
this.dialogWriteSign = false
|
||||
},
|
||||
|
||||
// 保存
|
||||
confirm(INSPECTION_STATUS) {
|
||||
this.$refs.form.validate(valid => {
|
||||
if (valid) {
|
||||
if (INSPECTION_STATUS === '-1') {
|
||||
if (!this.validStr(this.form.INSPECTION_USER_OPINION)) {
|
||||
this.$message.warning('有异议时,检查人意见不能为空')
|
||||
return false
|
||||
}
|
||||
}
|
||||
if (!this.validStr(this.form.INSPECTION_USER_SIGN_IMG)) {
|
||||
this.$message.warning('请在检查人签字处签字!')
|
||||
return false
|
||||
}
|
||||
const loading = this.$loading({
|
||||
lock: true,
|
||||
text: '数据保存中...',
|
||||
spinner: 'el-icon-loading',
|
||||
background: 'rgba(0, 0, 0, 0.7)'
|
||||
})
|
||||
this.listLoading = true
|
||||
requestFN(
|
||||
'/safetyenvironmentalinspector/verify',
|
||||
{ ...this.form,
|
||||
INSPECTION_STATUS: INSPECTION_STATUS
|
||||
}
|
||||
).then((data) => {
|
||||
this.$message({
|
||||
message: '保存成功',
|
||||
type: 'success'
|
||||
})
|
||||
this.listLoading = false
|
||||
loading.close()
|
||||
this.dialogFormEdit = false
|
||||
this.getQuery()
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
loading.close()
|
||||
})
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
// 判断按钮权限,用于是否显示按钮
|
||||
hasButton: function() {
|
||||
var keys = 'safetyenvironmentalinspector:add,safetyenvironmentalinspector:del,safetyenvironmentalinspector:edit,toExcel'
|
||||
requestFN(
|
||||
'/head/hasButton',
|
||||
{
|
||||
keys: keys
|
||||
}
|
||||
).then((data) => {
|
||||
this.add = data.safetyenvironmentalinspectorfhadminadd // 新增权限
|
||||
this.del = data.safetyenvironmentalinspectorfhadmindel // 删除权限
|
||||
this.edit = data.safetyenvironmentalinspectorfhadminedit // 修改权限
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
},
|
||||
// 获取数据字典数据
|
||||
getDict: function() {
|
||||
requestFN(
|
||||
'/dictionaries/getLevels',
|
||||
{
|
||||
DICTIONARIES_ID: '60e6481d96e44a5390ff5c347c4d1ffe' // 检查类型
|
||||
}
|
||||
).then((data) => {
|
||||
this.inspectionTypeList = data.list
|
||||
}).catch((e) => {
|
||||
|
||||
})
|
||||
},
|
||||
resetSearch() {
|
||||
this.search = {
|
||||
INSPECTED_DEPARTMENT_NAME: '', // 被检查单位
|
||||
INSPECTION_DEPARTMENT_NAME: '', // 检查部门
|
||||
INSPECTION_ORIGINATOR_NAME: '', // 检查发起人
|
||||
INSPECTION_TYPE: '', // 检查类型
|
||||
INSPECTION_TIME: ['', ''], // 检查时间
|
||||
INSPECTION_STATUS: '' // 检查状态
|
||||
}
|
||||
},
|
||||
resetForm(row) {
|
||||
this.form = {
|
||||
INSPECTION_INSPECTOR_ID: row.INSPECTION_INSPECTOR_ID, // 安全环保检查人员主键ID
|
||||
INSPECTION_ID: row.INSPECTION_ID, // 安全环保检查ID
|
||||
INSPECTION_USER_ID: row.INSPECTION_USER_ID, // 检查人
|
||||
INSPECTION_USER_OPINION: '', // 检查人意见(有异议时必填)
|
||||
INSPECTION_USER_SIGN_IMG: '', // 检查人签字
|
||||
INSPECTION_USER_SIGN_TIME: ''// 检查人签字时间
|
||||
}
|
||||
},
|
||||
formatDate(date, format) {
|
||||
return formatDate(date, format)
|
||||
},
|
||||
|
||||
openTrajectory(id) {
|
||||
this.$refs.trakectory.init(id)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
|
|
@ -0,0 +1,105 @@
|
|||
<template>
|
||||
<el-dialog v-if="dialogVisible" :visible.sync="dialogVisible" :v-loading="loading" title="申辩记录">
|
||||
<el-table :data="list" border>
|
||||
<el-table-column prop="CREATTIME" label="申辩时间"/>
|
||||
<el-table-column prop="INSPECTED_EXPLAIN" label="申辩描述"/>
|
||||
<el-table-column prop="ISPASS" label="申辩状态">
|
||||
<template slot-scope="{row}">
|
||||
{{ row.ISPASS === '0'?'待审核': (row.ISPASS === '1'?'申辩成功':row.ISPASS === '2'?'申辩驳回':'历史数据' ) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="INSPECTED_SITEUSER_SIGN_IMG" label="签字图片">
|
||||
<template slot-scope="{row}">
|
||||
<el-image
|
||||
:src="config.fileUrl + row.INSPECTED_SITEUSER_SIGN_IMG"
|
||||
:preview-src-list="new Array(config.fileUrl + row.INSPECTED_SITEUSER_SIGN_IMG)"
|
||||
:z-index="9999"
|
||||
style="width: 100px; height: 100px"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="INSPECTED_EXPLAIN_FILENAME" label="申辩附件名称"/>
|
||||
<el-table-column prop="INSPECTED_EXPLAIN_FILEPATH" label="申辩附件">
|
||||
<template slot-scope="{row}">
|
||||
<el-button :disabled="!row.INSPECTED_EXPLAIN_FILENAME" type="primary" @click="downloadFile(row.INSPECTION_EXPLAIN_ID)">下载</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="INSPECTION_ORIGINATOR_SIGN_IMG" label="检查人签字">
|
||||
<template slot-scope="{row}">
|
||||
<el-image
|
||||
v-if="row.ISPASS === '2'"
|
||||
:src="config.fileUrl + row.INSPECTION_ORIGINATOR_SIGN_IMG"
|
||||
:preview-src-list="new Array(config.fileUrl + row.INSPECTION_ORIGINATOR_SIGN_IMG)"
|
||||
:z-index="9999"
|
||||
style="width: 100px; height: 100px"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="INSPECTED_EXPLAIN_REFUSE" label="检查人意见">
|
||||
<template slot-scope="{row}">
|
||||
{{ row.ISPASS === '2' ? row.INSPECTED_EXPLAIN_REFUSE : '' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="INSPECTION_ORIGINATOR_SIGN_TIME" label="审批时间">
|
||||
<template slot-scope="{row}">
|
||||
{{ row.ISPASS === '2' ? row.INSPECTION_ORIGINATOR_SIGN_TIME : row.ISPASS === '1' ? row.OPERATTIME : '' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</template>
|
||||
<script>
|
||||
import Pagination from '@/components/Pagination' // 通过 el-pagination二次打包
|
||||
import { requestFN } from '@/utils/request'
|
||||
import WriteSign from '@/components/WriteSign'
|
||||
import waves from '@/directive/waves' // waves directive
|
||||
export default {
|
||||
components: { Pagination, WriteSign },
|
||||
directives: { waves },
|
||||
data() {
|
||||
return {
|
||||
dialogVisible: false,
|
||||
loading: false,
|
||||
config: config,
|
||||
list: [],
|
||||
listQuery: {
|
||||
page: 1,
|
||||
limit: 20
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
init(id) {
|
||||
this.dialogVisible = true
|
||||
this.loading = true
|
||||
requestFN(
|
||||
'/safetyenvironmental/getExplain?showCount=' + this.listQuery.limit + '¤tPage=' + this.listQuery.page,
|
||||
{
|
||||
INSPECTION_ID: id
|
||||
}
|
||||
).then((data) => {
|
||||
this.loading = false
|
||||
this.list = data.list
|
||||
}).catch((e) => {
|
||||
this.$message.error(e)
|
||||
this.listLoading = false
|
||||
})
|
||||
},
|
||||
downloadFile(id) {
|
||||
this.$confirm('确定要下载此文件吗?', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.listLoading = false
|
||||
window.location.href = config.httpurl + 'safetyenvironmental/downloadExplain?INSPECTION_EXPLAIN_ID=' + id
|
||||
}).catch(() => {
|
||||
this.listLoading = false
|
||||
})
|
||||
this.listLoading = false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
<template>
|
||||
<div>
|
||||
<List v-show="activeName=='List'" ref="list" />
|
||||
<InspectionInfo v-if="activeName=='InspectionInfo'" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import List from './components/list'
|
||||
import InspectionInfo from '../inspection/components/info'
|
||||
export default {
|
||||
components: {
|
||||
List,
|
||||
InspectionInfo
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
activeName: 'List',
|
||||
INSPECTION_ID: ''
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
activeName(newValue, oldValue) {
|
||||
if (newValue == 'List') {
|
||||
this.$refs.list.getQuery()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
Loading…
Reference in New Issue