<template>
|
<div class="app-container">
|
<div class="filter-container">
|
<div style="display: block;padding-top: 10px">
|
<div class="basic_search">
|
<span>区域:</span>
|
<el-select v-model="listQuery.filter.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.filter.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.filter.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.filter.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.filter.committee" clearable filterable>
|
<el-option
|
v-for="item in committeeList"
|
:key="item.id"
|
:label="item.name"
|
:value="item.name"
|
>
|
</el-option>
|
</el-select>
|
</div>
|
</div>
|
<div style="display: block;padding-top: 10px">
|
<div class="basic_search" style="padding-top: 10px">
|
<span>安全监管分类:</span>
|
<el-select filterable clearable v-model="listQuery.filter.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-select filterable clearable v-model="listQuery.filter.range">
|
<el-option
|
v-for="item in rangeList"
|
:key="item.id"
|
:label="item.name"
|
:value="item.id"
|
></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']"
|
>
|
</el-date-picker>
|
</div>
|
</div>
|
<div style="display: block;padding-top: 10px">
|
<div class="basic_search" style="padding-top: 10px">
|
<span>按单位名称:</span>
|
<el-input filterable clearable v-model="listQuery.filter.enterprisename" style="width:200px">
|
</el-input>
|
</div>
|
<div class="basic_search" style="padding-top: 10px">
|
<span>录入周期:</span>
|
<el-select filterable clearable v-model="listQuery.filter.cycle">
|
<el-option
|
v-for="item in cycleList"
|
:key="item.id"
|
:label="item.name"
|
:value="item.name"
|
></el-option>
|
</el-select>
|
</div>
|
<div class="basic_search">
|
<el-button style="margin-left: 10px;" type="primary" icon="el-icon-plus" @click="addSelfExam('新增','')">新增</el-button>
|
<el-button style="margin-left: 10px;" type="primary" icon="el-icon-search" @click="searchSelfExam('查询','')">查询</el-button>
|
<el-button style="margin-left: 10px;" type="primary" icon="el-icon-download" @click="exportToExcel">导出</el-button>
|
</div>
|
</div>
|
</div>
|
<div class="table_content">
|
<el-table
|
v-loading="listLoading"
|
:key="tableKey"
|
:data="selfExamData"
|
border
|
fit
|
highlight-current-row
|
style="width: 100%;"
|
>
|
<el-table-column label="序号" type="index" align="center" width="60"/>
|
<el-table-column label="单位名称" prop="enterprisename" align="center">
|
</el-table-column>
|
<el-table-column label="单号" prop="code" align="center" width="200px">
|
</el-table-column>
|
<el-table-column label="申请人" prop="applyperson" align="center">
|
</el-table-column>
|
<el-table-column label="总项数" prop="totalnum" align="center">
|
</el-table-column>
|
<el-table-column label="自查时间" prop="createtime" align="center" width="200px">
|
</el-table-column>
|
<el-table-column label="一般隐患" prop="normalnum" align="center">
|
</el-table-column>
|
<el-table-column label="重大隐患" prop="majornum" align="center">
|
</el-table-column>
|
<el-table-column label="过期未处理" prop="overduenum" align="center">
|
</el-table-column>
|
<el-table-column label="未处理" prop="undealnum" align="center">
|
</el-table-column>
|
<el-table-column label="状态" prop="status" align="center">
|
</el-table-column>
|
<el-table-column label="操作" align="center" width="180" class-name="small-padding fixed-width">
|
<template slot-scope="scope">
|
<el-button type="text" @click="openSelfExam('查看',scope.row)">查看</el-button>
|
<el-button type="text" @click="changeStatus('提交',scope.row)" v-show="scope.row.status === '已提交' ? false : true">提交</el-button>
|
<el-button type="text" @click="addSelfExam('修改',scope.row)" v-show="scope.row.status === '已提交' ? false : true">修改</el-button>
|
</template>
|
</el-table-column>
|
</el-table>
|
<br>
|
<el-pagination
|
v-show="recordTotal>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>
|
</div>
|
</template>
|
|
<script>
|
import {computePageCount} from "../../utils";
|
import { getSelfExamData , commitStatus , exportSelfExam } from '@/api/selfExam'
|
import {getCityListData, getProvinceListData} from "../../api/area";
|
import {dictionaryAllItems} from "../../api/dictionary";
|
export default {
|
name: "selfexam",
|
data(){
|
return{
|
tableKey:'',
|
selfExamData:[],
|
cityList:[],
|
provinceList:[],
|
districtList:[],
|
streetList:[],
|
committeeList:[],
|
validTime:['',''],
|
cycleList:[
|
{id:1,name:'月报'},
|
{id:2,name:'季报'},
|
{id:3,name:'半年报'},
|
{id:4,name:'年报'},
|
{id:5,name:'不报'}
|
],
|
rangeList:[
|
{id:1,name:'无隐患'},
|
{id:2,name:'一般隐患'},
|
{id:3,name:'重大隐患'},
|
{id:4,name:'未处理隐患'}
|
],
|
safetySuperVisionList:[],
|
listQuery:{
|
filter: {
|
province:'',
|
city:'',
|
district:'',
|
street:'',
|
committee:'',
|
range:'',
|
cycle:'',
|
starttime:'',
|
endtime:'',
|
safetysupervision:'',
|
enterprisename:'',
|
},
|
pageIndex: 1,
|
pageSize: 10
|
},
|
pageSize: 10,
|
recordTotal: 0,
|
currentPage: 1,
|
pageTotal: 0,
|
listLoading:false
|
}
|
},
|
created(){
|
this.getSelfExam()
|
this.getProvince()
|
this.getSafetySuperVisionList()
|
},
|
methods:{
|
async getSelfExam(){
|
this.listLoading = true
|
if( this.validTime !== null ){
|
this.listQuery.filter.starttime = this.validTime[0]
|
this.listQuery.filter.endtime = this.validTime[1]
|
}else{
|
this.listQuery.filter.starttime = ''
|
this.listQuery.filter.endtime = ''
|
}
|
let res = await getSelfExamData(this.listQuery)
|
if(res.data.code === "200"){
|
this.recordTotal = res.data.result.total
|
this.pageSize = res.data.result.size
|
this.pageTotal = computePageCount(res.data.result.total, res.data.result.size)
|
this.currentPage = res.data.result.current
|
this.selfExamData = res.data.result.records
|
}else{
|
this.$message({
|
type:'warning',
|
message:res.data.message
|
})
|
}
|
this.listLoading = false
|
},
|
|
async exportToExcel(){
|
let res = await exportSelfExam(this.listQuery)
|
if(res.data.code === '200'){
|
if(res.data.result === null || res.data.result === []){
|
|
}else{
|
let allData = res.data.result
|
import('@/vendor/Export2Excel').then((excel) => {
|
const tHeader = [
|
'单位名称',
|
'单号',
|
'申请人',
|
'总项数',
|
'自查时间',
|
'一般隐患',
|
'重大隐患',
|
'过期未处理',
|
'未处理',
|
]
|
const filterVal = [
|
'enterprisename',
|
'code',
|
'applyperson',
|
'totalnum',
|
'createtime',
|
'normalnum',
|
'majornum',
|
'overduenum',
|
'undealnum',
|
]
|
const data = this.formatJson(filterVal, allData)
|
excel.export_json_to_excel({
|
header: tHeader,
|
data,
|
filename: '自查自检'
|
})
|
})
|
}
|
|
}else{
|
this.$message({
|
message:res.data.message,
|
type:'warning'
|
})
|
}
|
},
|
|
formatJson(filterVal, jsonData) {
|
return jsonData.map(v => filterVal.map(j => v[j]))
|
},
|
|
searchSelfExam(){
|
this.getSelfExam()
|
},
|
async changeStatus(title,value){
|
this.$confirm('提交此条信息,是否继续','提示',{
|
confirmButtonText:'确定',
|
cancelButtonText:'取消',
|
type:'warning',
|
}).then(()=> {
|
commitStatus(value.code).then( (res)=>{
|
if(res.data.code === "200"){
|
this.getSelfExam()
|
this.$notify({
|
title:'成功',
|
message:'提交成功',
|
type:'success',
|
duration:2000,
|
})
|
}else{
|
this.$message({
|
type:'warning',
|
message:res.data.message
|
})
|
}
|
})
|
})
|
},
|
addSelfExam(title,value){
|
this.$router.push({path:'/trouble/selfExamComponents/addSelfExam',query:{title:title,code:value.code,id:value.id}})
|
},
|
openSelfExam(title,value){
|
this.$router.push({path:'/trouble/selfExamComponents/lookSelfExam',query:{code:value.code}})
|
},
|
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.filter.city = ''
|
this.listQuery.filter.district = ''
|
this.listQuery.filter.street = ''
|
this.listQuery.filter.committee = ''
|
this.areaListQuery = {
|
type: 2,
|
parenttype: 1,
|
parentname: this.listQuery.filter.province,
|
}
|
let res = await getCityListData(this.areaListQuery)
|
if(res.data.code === "200"){
|
this.cityList = res.data.result
|
}
|
}else if(value === 'city'){
|
this.listQuery.filter.district = ''
|
this.listQuery.filter.street = ''
|
this.listQuery.filter.committee = ''
|
this.areaListQuery = {
|
type: 3,
|
parenttype: 2,
|
parentname: this.listQuery.filter.city,
|
}
|
let res = await getCityListData(this.areaListQuery)
|
if(res.data.code === "200"){
|
this.districtList = res.data.result
|
}
|
}else if(value === 'district'){
|
this.listQuery.filter.street = ''
|
this.listQuery.filter.committee = ''
|
this.areaListQuery = {
|
type: 4,
|
parenttype: 3,
|
parentname: this.listQuery.filter.district,
|
}
|
let res = await getCityListData(this.areaListQuery)
|
if(res.data.code === "200"){
|
this.streetList = res.data.result
|
}
|
}else if(value === 'street'){
|
this.listQuery.filter.committee = ''
|
this.areaListQuery = {
|
type: 5,
|
parenttype: 4,
|
parentname: this.listQuery.filter.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
|
},//获取安全监管分类
|
|
handleSizeChange(val) {
|
this.listQuery.pageSize = val
|
this.getSelfExam()
|
},
|
handleCurrentChange(val) {
|
this.listQuery.pageIndex = val
|
this.getSelfExam()
|
},
|
}
|
|
}
|
</script>
|
|
<style scoped>
|
.d-f {
|
display: flex;
|
margin: 10px;
|
}
|
|
.right {
|
width: 220px;
|
height: 800px;
|
}
|
|
.left {
|
flex: 1;
|
margin-left: 10px;
|
}
|
|
.el-tree {
|
border: none;
|
}
|
.dis-inline-b{
|
display: inline-block;
|
margin-bottom: 10px;
|
}
|
.w-150{
|
width: 200px;
|
}
|
.basic_search{
|
display:inline-block;
|
}
|
|
</style>
|