<template>
|
<div class="app-container">
|
<div class="filter-container">
|
|
<div style="display: block;padding-top: 10px">
|
<!-- <div class="basic_search" style="padding-top: 10px">-->
|
<!-- <span>安全监管分类:</span>-->
|
<!-- <el-select filterable clearable v-model="listQuery.safetysupervision">-->
|
<!-- <el-option-->
|
<!-- v-for="item in safetySuperVisionList"-->
|
<!-- :key="item.id"-->
|
<!-- :label="item.text"-->
|
<!-- :value="item.text"-->
|
<!-- ></el-option>-->
|
<!-- </el-select>-->
|
<!-- </div>-->
|
<div class="basic_search" style="padding-top: 10px;">
|
<span>按时间查询:</span>
|
<el-date-picker
|
value-format="yyyy-MM-dd HH:mm:ss"
|
v-model="validTime"
|
type="daterange"
|
range-separator="至"
|
start-placeholder="开始日期"
|
end-placeholder="结束日期"
|
:default-time="['00:00:00', '23:59:59']"
|
@change="giveTime()"
|
>
|
</el-date-picker>
|
</div>
|
<div class="basic_search" style="padding-top: 10px">
|
<span>按单位名称:</span>
|
<el-input filterable clearable v-model="listQuery.ename" style="width:200px">
|
</el-input>
|
</div>
|
<div class="basic_search">
|
<span>隐患状态:</span>
|
<el-select v-model="listQuery.status" style="width:200px">
|
<el-option
|
v-for="item in statusList"
|
:key="item.id"
|
:label="item.name"
|
:value="item.id"
|
>
|
</el-option>
|
</el-select>
|
</div>
|
<div class="basic_search">
|
<span>隐患等级:</span>
|
<el-select v-model="listQuery.yhlevel" style="width:200px">
|
<el-option
|
v-for="item in yhlevelList"
|
:key="item.id"
|
:label="item.name"
|
:value="item.id"
|
>
|
</el-option>
|
</el-select>
|
</div>
|
<div class="basic_search">
|
<span>区域:</span>
|
<el-select v-model="listQuery.province" clearable filterable @change="changeArea('province')">
|
<el-option
|
v-for="item in provinceList"
|
:key="item.id"
|
:label="item.name"
|
:value="item.name"
|
>
|
</el-option>
|
</el-select>
|
</div>
|
<div class="basic_search">
|
<el-select v-model="listQuery.city" prop="city" clearable filterable @change="changeArea('city')">
|
<el-option
|
v-for="item in cityList"
|
:key="item.id"
|
:label="item.name"
|
:value="item.name"
|
>
|
</el-option>
|
</el-select>
|
</div>
|
<div class="basic_search">
|
<el-select v-model="listQuery.district" clearable filterable @change="changeArea('district')">
|
<el-option
|
v-for="item in districtList"
|
:key="item.id"
|
:label="item.name"
|
:value="item.name"
|
>
|
</el-option>
|
</el-select>
|
</div>
|
<div class="basic_search">
|
<el-select v-model="listQuery.street"clearable filterable @change="changeArea('street')" >
|
<el-option
|
v-for="item in streetList"
|
:key="item.id"
|
:label="item.name"
|
:value="item.name"
|
>
|
</el-option>
|
</el-select>
|
</div>
|
<div class="basic_search">
|
<el-select v-model="listQuery.committee" clearable filterable>
|
<el-option
|
v-for="item in committeeList"
|
:key="item.id"
|
:label="item.name"
|
:value="item.name"
|
>
|
</el-option>
|
</el-select>
|
</div>
|
<el-button class="filter-item" style="margin-left: 10px;margin-top: 10px" type="primary" icon="el-icon-refresh" @click="refreshHandle">搜索</el-button>
|
<el-button class="filter-item" style="margin-left: 10px;margin-top: 10px" type="primary" icon="el-icon-plus" @click="showSelfCheckForm('','新增')">新增</el-button>
|
<el-button style="margin-left: 10px;" type="primary" icon="el-icon-download" @click="exportToExcel">导出</el-button>
|
</div>
|
|
</div>
|
<div class="table_content">
|
<el-table
|
v-loading="listLoading"
|
:key="tableKey"
|
:data="selfCheckData"
|
border
|
fit
|
highlight-current-row
|
style="width: 100%;"
|
>
|
<el-table-column label="企业名称" prop="ename" align="center">
|
</el-table-column>
|
<el-table-column label="自查问题隐患描述" prop="yhdesc" align="center">
|
</el-table-column>
|
<el-table-column label="检查时间" prop="endtime" align="center">
|
</el-table-column>
|
<el-table-column label="隐患等级" prop="yhlevel" align="center">
|
<template slot-scope="scope">
|
<div v-for="item in yhlevelList">
|
<div v-show="item.id === scope.row.yhlevel">{{item.name}}</div>
|
</div>
|
</template>
|
</el-table-column>
|
<el-table-column label="整改措施" prop="solution" align="center">
|
</el-table-column>
|
<el-table-column label="整改资金(元)" prop="price" align="center">
|
</el-table-column>
|
<el-table-column label="责任人" prop="chargeperson" align="center">
|
</el-table-column>
|
<el-table-column label="隐患状态" prop="status" align="center">
|
<template slot-scope="scope">
|
<div v-for="item in statusList">
|
<div v-show="scope.row.status === item.id">
|
<el-tag :type="scope.row.status === 1 ? 'danger' : 'success'">
|
{{item.name}}
|
</el-tag>
|
</div>
|
</div>
|
</template>
|
</el-table-column>
|
<el-table-column label="操作" align="center" width="280" class-name="small-padding fixed-width">
|
<template slot-scope="scope">
|
<el-button type="text" @click="showSelfCheckForm(scope.row,'编辑')" v-show="scope.row.status === 1">编辑</el-button>
|
</template>
|
</el-table-column>
|
</el-table>
|
<br>
|
<el-pagination
|
v-show="pageTotal>0"
|
:current-page="currentPage"
|
:page-sizes="[10, 20, 30, 50]"
|
:page-size="pageSize"
|
:total="recordTotal"
|
layout="total, sizes, prev, pager, next, jumper"
|
background
|
style="float:right;"
|
@size-change="handleSizeChange"
|
@current-change="handleCurrentChange"
|
/>
|
<br>
|
</div>
|
<el-dialog :title="title" :visible.sync="selfCheckVisible" :modal-append-to-body="false" :close-on-click-modal="false" width="600px">
|
<el-form ref="selfCheckForm" :rules="selfCheckFormRules" :model="selfCheckForm" label-position="right" label-width="165px">
|
<el-form-item label="自查问题隐患描述" prop="yhdesc">
|
<el-input type="textarea" :row="2" v-model="selfCheckForm.yhdesc" class="analyseUnit_input">
|
</el-input>
|
</el-form-item>
|
<el-form-item label="检查时间" prop="endtime">
|
<el-date-picker value-format="yyyy-MM-dd HH:mm:ss" type="datetime" placeholder="请选择检查时间" v-model="selfCheckForm.endtime" class="analyseUnit_input"></el-date-picker>
|
</el-form-item>
|
<el-form-item label="隐患等级" prop="yhlevel">
|
<el-select v-model="selfCheckForm.yhlevel" class="analyseUnit_input">
|
<el-option
|
v-for="item in yhlevelList"
|
:key="item.id"
|
:value="item.id"
|
:label="item.name"
|
>
|
</el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="整改措施" prop="solution">
|
<el-input type="textarea" :row="2" v-model="selfCheckForm.solution" class="analyseUnit_input"></el-input>
|
</el-form-item>
|
<el-form-item label="整改资金(元)" prop="price">
|
<el-input type="number" step="0.01" v-model="selfCheckForm.price" class="analyseUnit_input"></el-input>
|
</el-form-item>
|
<el-form-item label="责任人" prop="chargeperson">
|
<el-input v-model="selfCheckForm.chargeperson" class="analyseUnit_input"></el-input>
|
</el-form-item>
|
<el-form-item label="隐患状态" prop="status">
|
<el-select v-model="selfCheckForm.status" class="analyseUnit_input">
|
<el-option
|
v-for="item in statusList"
|
:key="item.id"
|
:value="item.id"
|
:label="item.name"
|
>
|
</el-option>
|
</el-select>
|
</el-form-item>
|
</el-form>
|
<div align="right">
|
<el-button @click="selfCheckVisible = false">取消</el-button>
|
<el-button type="primary" @click="submitSelfCheck()">确认</el-button>
|
</div>
|
</el-dialog>
|
</div>
|
</template>
|
|
<script>
|
import Cookies from 'js-cookie'
|
import { mapGetters } from 'vuex'
|
import { computePageCount } from '@/utils'
|
import { getSafetyRiskTroubleStatisticsData , addSafetyRiskTroubleStatistics , updateSafetyRiskTroubleStatistics , deleteSafetyRiskTroubleStatistics} from '@/api/safetyRiskTroubleStatistics'
|
import { getCityListData, getProvinceListData } from '../../api/area'
|
import { dictionaryAllItems } from '../../api/dictionary'
|
|
export default {
|
name: 'safetyRiskTroubleStatistics',
|
filters: {
|
parseLevel(value){
|
return 3
|
},
|
},
|
computed: {
|
...mapGetters([
|
'userType'
|
])
|
},
|
data() {
|
return {
|
tableKey: 0,
|
status: 1,
|
yhlevel:'',
|
selfCheckData: [],
|
cityList:[],
|
provinceList:[],
|
districtList:[],
|
streetList:[],
|
committeeList:[],
|
validTime:['',''],
|
safetySuperVisionList:[],
|
yhlevelList:[{id:1,name:'一般隐患'},{id:2,name:'重大隐患'}],
|
statusList:[{id:1,name:'未整改'},{id:2,name:'已整改'}],
|
listLoading: false,
|
pageSize: 10,
|
recordTotal: 0,
|
currentPage: 1,
|
pageTotal: 0,
|
title:'',
|
company:'',
|
code:'',
|
selfCheckVisible:false,
|
selfCheckFormRules:{
|
yhdesc: [{ required: true, message: '自查问题隐患描述不能为空', trigger: 'blur' }],
|
endtTime: [{ required: true, message: '检查时间不能为空', trigger: 'change' }],
|
yhlevel: [{ required: true, message: '隐患等级不能为空', trigger: 'change' }],
|
solution: [{ required: true, message: '整改措施不能为空', trigger: 'blur' }],
|
price: [{ required: true, message: '整改资金(元)不能为空', trigger: 'blur' }],
|
chargeperson: [{ required: true, message: '责任人不能为空', trigger: 'blur' }],
|
status: [{ required: true, message: '隐患状态不能为空', trigger: 'change' }],
|
},
|
listQuery:{
|
city: "",
|
committee: "",
|
district: "",
|
eid: null,
|
ename: "",
|
endTime: "",
|
page: 1,
|
pageSize: 10,
|
province: "",
|
startTime: "",
|
status: '',
|
street: "",
|
totalCount: 0,
|
yhlevel: '',
|
},
|
selfCheckForm:{
|
id: null,
|
yhdesc:'',
|
endtime:'',
|
yhlevel:'',
|
solution:'',
|
price:'',
|
chargeperson:'',
|
status:'',
|
},
|
}
|
},
|
created() {
|
this.getSelfCheckData()
|
this.getProvince()
|
this.getSafetySuperVisionList()
|
},
|
methods: {
|
async getSelfCheckData(){
|
this.listLoading = true
|
this.listQuery.eid = Cookies.get('isSupervision') === 'null' ? '' : Cookies.get('isSupervision')
|
let res = await getSafetyRiskTroubleStatisticsData(this.listQuery)
|
if(res.data.code === '200' && res.data.result){
|
let pagData = JSON.parse(res.data.message)
|
this.recordTotal = pagData.totalCount
|
this.pageSize = pagData.pageSize
|
this.pageTotal = computePageCount(pagData.totalCount, pagData.pageSize)
|
this.currentPage = pagData.current
|
this.selfCheckData = res.data.result
|
}else{
|
this.$message({
|
message:res.data.message,
|
type:'warning'
|
})
|
if(res.data.message === '未找到结果'){
|
this.selfCheckData = []
|
}
|
}
|
this.listLoading = false
|
},
|
showSelfCheckForm(value,type){
|
this.selfCheckVisible = true
|
this.$nextTick(() =>{
|
this.$refs["selfCheckForm"].clearValidate()
|
})
|
if(type === '新增'){
|
this.title = '新增'
|
this.selfCheckForm = {
|
id: null,
|
yhdesc:'',
|
endtime:'',
|
yhlevel:'',
|
solution:'',
|
price:'',
|
chargeperson:'',
|
status:'',
|
}
|
}else{
|
this.title = '编辑'
|
this.selfCheckForm = value
|
}
|
},
|
submitSelfCheck(){
|
this.$refs["selfCheckForm"].validate((valid) =>{
|
if(valid){
|
this.selfCheckForm.price = parseInt(this.selfCheckForm.price)
|
if(this.title === '新增'){
|
addSafetyRiskTroubleStatistics(this.selfCheckForm).then((res)=>{
|
if(res.data.code === '200'){
|
this.selfCheckVisible = false
|
this.getSelfCheckData()
|
this.$notify({
|
type:'success',
|
duration:2000,
|
message:'新增成功',
|
title:'成功'
|
})
|
}else{
|
this.$message({
|
type:'warning',
|
message:res.data.message
|
})
|
}
|
})
|
}else{
|
this.$delete(this.selfCheckForm,'checktime')
|
updateSafetyRiskTroubleStatistics(this.selfCheckForm).then((res)=>{
|
if(res.data.code === '200'){
|
this.selfCheckVisible = false
|
this.getSelfCheckData()
|
this.$notify({
|
type:'success',
|
duration:2000,
|
title:'成功',
|
message:'编辑成功'
|
})
|
}else{
|
this.$message({
|
type:'warning',
|
message:res.data.message
|
})
|
}
|
})
|
}
|
}else{
|
this.$message({
|
type:'warning',
|
message:'请完善基本信息'
|
})
|
}
|
})
|
|
},
|
async exportToExcel(){
|
let params = {}
|
params['eid'] = Cookies.get('isSupervision') || ''
|
params['status'] = this.status
|
params['yhlevel'] = this.yhlevel
|
let res = await getSafetyRiskTroubleStatisticsData(params)
|
if(res.data.code === '200'){
|
if(res.data.result === null || res.data.result === []){
|
this.$message({
|
message:'无数据可导出',
|
type:'warning'
|
})
|
}else{
|
let allData = res.data.result.map( item => {
|
return{
|
ename: item.ename,
|
yhdesc: item.yhdesc,
|
endtime: item.endtime,
|
yhlevel: item.endtime === 1 ? '一般隐患' : '重大隐患',
|
solution: item.ename,
|
price: item.ename,
|
chargeperson: item.ename,
|
status : item.status === 1 ? '未整改' : '已整改'
|
}
|
})
|
import('@/vendor/Export2Excel').then((excel) => {
|
const tHeader = [
|
'单位名称',
|
'自查问题隐患描述',
|
'检查时间',
|
'隐患等级',
|
'整改措施',
|
'整改资金(元)',
|
'责任人',
|
'隐患状态',
|
]
|
const filterVal = [
|
'ename',
|
'yhdesc',
|
'endtime',
|
'yhlevel',
|
'solution',
|
'price',
|
'chargeperson',
|
'status',
|
]
|
const data = this.formatJson(filterVal, allData)
|
excel.export_json_to_excel({
|
header: tHeader,
|
data,
|
filename: '安全隐患风险统计'
|
})
|
})
|
}
|
|
}else{
|
this.$message({
|
message:res.data.message,
|
type:'warning'
|
})
|
}
|
},
|
|
async getProvince(){
|
let res = await getProvinceListData()
|
if(res.data.code === "200"){
|
this.provinceList = res.data.result.provinceList
|
}
|
},//获取省
|
|
async changeArea(value){
|
if(value === 'province'){
|
this.listQuery.city = ''
|
this.listQuery.district = ''
|
this.listQuery.street = ''
|
this.listQuery.committee = ''
|
this.areaListQuery = {
|
type: 2,
|
parenttype: 1,
|
parentname: this.listQuery.province,
|
}
|
let res = await getCityListData(this.areaListQuery)
|
if(res.data.code === "200"){
|
this.cityList = res.data.result
|
}
|
}else if(value === 'city'){
|
this.listQuery.district = ''
|
this.listQuery.street = ''
|
this.listQuery.committee = ''
|
this.areaListQuery = {
|
type: 3,
|
parenttype: 2,
|
parentname: this.listQuery.city,
|
}
|
let res = await getCityListData(this.areaListQuery)
|
if(res.data.code === "200"){
|
this.districtList = res.data.result
|
}
|
}else if(value === 'district'){
|
this.listQuery.street = ''
|
this.listQuery.committee = ''
|
this.areaListQuery = {
|
type: 4,
|
parenttype: 3,
|
parentname: this.listQuery.district,
|
}
|
let res = await getCityListData(this.areaListQuery)
|
if(res.data.code === "200"){
|
this.streetList = res.data.result
|
}
|
}else if(value === 'street'){
|
this.listQuery.committee = ''
|
this.areaListQuery = {
|
type: 5,
|
parenttype: 4,
|
parentname: this.listQuery.street,
|
}
|
let res = await getCityListData(this.areaListQuery)
|
if(res.data.code === "200"){
|
this.committeeList = res.data.result
|
}
|
}
|
},//市、镇、街道、委员会
|
|
async getSafetySuperVisionList(){
|
const params = {}
|
params['dictionaryType'] = '安全监管分类'
|
let res = await dictionaryAllItems(params)
|
this.safetySuperVisionList = res.data.result
|
},//获取安全监管分类
|
|
formatJson(filterVal, jsonData) {
|
return jsonData.map(v => filterVal.map(j => v[j]))
|
},
|
|
giveTime(){
|
this.listQuery.startTime = this.validTime[0]
|
this.listQuery.endTime = this.validTime[1]
|
},
|
|
refreshHandle(){
|
this.getSelfCheckData()
|
},
|
handleSizeChange(val){
|
this.listQuery.pageSize = val
|
this.getSelfCheckData()
|
},
|
handleCurrentChange(val){
|
this.listQuery.page = val
|
this.getSelfCheckData()
|
},
|
}
|
}
|
</script>
|
<style scoped>
|
.basic_search{
|
display:inline-block;
|
padding-bottom: 10px;
|
}
|
.analyseUnit_input{
|
width:320px;
|
}
|
</style>
|