From ab701df859cd79ae036f8cc86268137d2c8da8ee Mon Sep 17 00:00:00 2001
From: guanqb <18720758508@163.com>
Date: Thu, 22 Feb 2024 18:00:56 +0800
Subject: [PATCH] 消防自查导出、消防自查和场所检查增加场所类别字段
---
src/views/publicSecurity/ninePlaceManage/hiddenDangerStatistics.vue | 534 +++++++++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 479 insertions(+), 55 deletions(-)
diff --git a/src/views/publicSecurity/ninePlaceManage/hiddenDangerStatistics.vue b/src/views/publicSecurity/ninePlaceManage/hiddenDangerStatistics.vue
index ee37fbd..eea0eca 100644
--- a/src/views/publicSecurity/ninePlaceManage/hiddenDangerStatistics.vue
+++ b/src/views/publicSecurity/ninePlaceManage/hiddenDangerStatistics.vue
@@ -1,10 +1,28 @@
<template>
<basic-container>
+ <div class="search-box">
+ <div class="date-box">
+ <div class="name">检查时间:</div>
+ <el-date-picker v-model="dateTime" type="daterange" range-separator="至" start-placeholder="开始日期"
+ end-placeholder="结束日期" value-format="yyyy-MM-dd" format="yyyy-MM-dd">
+ </el-date-picker>
+ </div>
+ <div class="btn-box">
+ <el-button type="primary" icon="el-icon-search" @click="searchChange">搜索</el-button>
+ <el-button icon="el-icon-refresh" @click="searchReset">重置</el-button>
+ <!-- <el-button type="primary" icon="el-icon-download" @click="exportAvue">导出</el-button> -->
+ </div>
+ </div>
+
<avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" ref="crud" @row-del="rowDel"
v-model="form" :permission="permissionList" @row-update="rowUpdate" @row-save="rowSave"
:before-open="beforeOpen" @search-change="searchChange" @search-reset="searchReset"
@selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
@refresh-change="refreshChange" @on-load="onLoad">
+ <template slot="menuLeft">
+ <el-button type="warning" size="small" plain icon="el-icon-download" @click="exportAvue">导出
+ </el-button>
+ </template>
</avue-crud>
</basic-container>
</template>
@@ -13,7 +31,11 @@
import {
mapGetters
} from "vuex"
-import website from '@/config/website'
+import {
+ getYHTJList
+} from "@/api/publicSecurity/ninePlaceManage"
+import { export_json_to_excels } from "@/util/Export2Excel"
+import { timestampToTime } from "@/util/timeStamp"
export default {
data () {
@@ -27,7 +49,7 @@
currentPage: 1,
total: 0,
},
- datetime: "",
+ dateTime: "",
selectionList: [],
option: {
height: "auto",
@@ -37,54 +59,120 @@
searchShow: true,
searchMenuSpan: 3,
menu: false,
- header: false,
border: true,
index: true,
editBtn: false,
delBtn: false,
addBtn: false,
+ excelBtn: false,
+ columnBtn: false,
+ refreshBtn: false,
dialogClickModal: false,
- column: [{
- label: "地区",
- prop: "regionName",
- align: 'center',
- }, {
- label: "场所名称",
- prop: "regionName",
- align: 'center',
- }, {
- label: "场所地址",
- prop: "regionName",
- align: 'center',
- }, {
- label: "场所类别",
- prop: "regionName",
- align: 'center',
- }, {
- label: "场所负责人",
- prop: "regionName",
- align: 'center',
- }, {
- label: "身份证信息",
- prop: "regionName",
- align: 'center',
- }, {
- label: "联系方式",
- prop: "regionName",
- align: 'center',
- }, {
- label: "辖区派出所",
- prop: "regionName",
- align: 'center',
- }, {
- label: "责任民警",
- prop: "regionName",
- align: 'center',
- }, {
- label: "责任民警联系方式",
- prop: "regionName",
- align: 'center',
- }],
+ column: [
+ {
+ label: "地区",
+ prop: "name",
+ align: 'center',
+ }, {
+ label: "小商店",
+ prop: "xsd",
+ align: 'center',
+ },
+ {
+ label: "小旅馆",
+ prop: "xlg",
+ align: 'center',
+ },
+ {
+ label: "小学校(幼儿园、校外培训机构)",
+ align: 'center',
+ children: [
+ {
+ label: "学校",
+ prop: "xxx",
+ align: 'center',
+ },
+ {
+ label: "幼儿园",
+ prop: "yey",
+ align: 'center',
+ },
+ {
+ label: "校外培训机构",
+ prop: "xwpxjg",
+ align: 'center',
+ }
+ ]
+ },
+ {
+ label: "小医院(诊所、养老院)",
+ align: 'center',
+ children: [
+ {
+ label: "医院",
+ prop: "yy",
+ align: 'center',
+ },
+ {
+ label: "诊所",
+ prop: "zs",
+ align: 'center',
+ },
+ {
+ label: "养老院",
+ prop: "yly",
+ align: 'center',
+ }
+ ]
+ },
+ {
+ label: "小网吧",
+ prop: "xwb",
+ align: 'center',
+ },
+ {
+ label: "小餐饮场所",
+ prop: "xcycs",
+ align: 'center',
+ },
+ {
+ label: "小歌舞娱乐场所",
+ prop: "xgwylcs",
+ align: 'center',
+ },
+ {
+ label: "小美容洗浴场所",
+ prop: "xmrxycs",
+ align: 'center',
+ },
+ {
+ label: "小生产加工企业",
+ prop: "xscjgqy",
+ align: 'center',
+ },
+ {
+ label: "总数",
+ prop: "count",
+ align: 'center',
+ },
+ // {
+ // label: "检查时间",
+ // prop: "dateTime",
+ // type: "daterange",
+ // format: 'yyyy-MM-DD',
+ // valueFormat: 'yyyy-MM-DD',
+ // isAdmin: true,//自定义属性
+ // startPlaceholder: '日期开始范围',
+ // endPlaceholder: '日期结束范围',
+ // hide: true,
+ // addDisplay: false,
+ // editDisplay: false,
+ // viewDisplay: false,
+ // search: true,
+ // searchSpan: 6,
+ // searchRange: true,
+ // }
+ ],
},
data: []
}
@@ -109,7 +197,215 @@
},
},
+
+ created () {
+ this.dateTime = this.getLastMouth()
+ },
+
methods: {
+ exportAvue () {
+ this.$confirm("是否导出隐患统计数据?", "提示", {
+ confirmButtonText: "确定",
+ cancelButtonText: "取消",
+ type: "warning"
+ }).then(() => {
+ // this.$refs.crud.rowExcel()
+ this.exportBtn()
+ })
+ },
+
+ //json格式化
+ formatJson (filterVal, tableData) {
+ return tableData.map((v) => {
+ return filterVal.map((j) => {
+ return v[j]
+ })
+ })
+ },
+
+ // 导出
+ exportBtn () {
+ const multiHeader = ["序号", "地区", "小商店", "小旅馆", "小学校(幼儿园、校外培训机构)", "", "", "小医院(诊所、养老院)", "", "", "小网吧", "小餐饮场所", "小歌舞娱乐场所", "小美容洗浴场所", "小生产加工企业", "总数"]//第一行表头
+ const tHeader = ["", "", "", "", "学校", "幼儿园", "校外培训机构", "医院", "诊所", "养老院", "", "", "", "", "", "",]//最后一行的表头
+ const filterVal = [
+ "index",
+ "name",
+ "xsd",
+ "xlg",
+ "xxx",
+ "yey",
+ "xwpxjg",
+ "yy",
+ "zs",
+ "yly",
+ "xwb",
+ "xcycs",
+ "xgwylcs",
+ "xmrxycs",
+ "xscjgqy",
+ "count"
+ ]
+
+ var time = timestampToTime((new Date()).getTime())
+ var filename = '隐患统计' + time
+
+ this.data.forEach((item, index) => {
+ item.index = index + 1
+ })
+ var data = this.formatJson(filterVal, this.data)
+ const merges = [//合并单元格
+ {
+ s: {//开始单元格
+ r: 0,//纵轴坐标(1=0,以此类推)
+ c: 0//横轴坐标(A=0,以此类推)
+ },
+ e: {//结束单元格
+ r: 1,
+ c: 0
+ }
+ },
+ {
+ s: {
+ r: 0,
+ c: 1
+ },
+ e: {
+ r: 1,
+ c: 1
+ }
+ },
+ {
+ s: {
+ r: 0,
+ c: 2
+ },
+ e: {
+ r: 1,
+ c: 2
+ }
+ },
+ {
+ s: {
+ r: 0,
+ c: 3
+ },
+ e: {
+ r: 1,
+ c: 3
+ }
+ },
+ {
+ s: {
+ r: 0,
+ c: 4
+ },
+ e: {
+ r: 0,
+ c: 6
+ }
+ },
+ {
+ s: {
+ r: 0,
+ c: 7
+ },
+ e: {
+ r: 0,
+ c: 9
+ }
+ },
+ {
+ s: {
+ r: 0,
+ c: 10
+ },
+ e: {
+ r: 1,
+ c: 10
+ }
+ },
+ {
+ s: {
+ r: 0,
+ c: 11
+ },
+ e: {
+ r: 1,
+ c: 11
+ }
+ },
+ {
+ s: {
+ r: 0,
+ c: 12
+ },
+ e: {
+ r: 1,
+ c: 12
+ }
+ },
+ {
+ s: {
+ r: 0,
+ c: 13
+ },
+ e: {
+ r: 1,
+ c: 13
+ }
+ },
+ {
+ s: {
+ r: 0,
+ c: 14
+ },
+ e: {
+ r: 1,
+ c: 14
+ }
+ },
+ {
+ s: {
+ r: 0,
+ c: 15
+ },
+ e: {
+ r: 1,
+ c: 15
+ }
+ }
+ ]
+ export_json_to_excels({
+ headerOne: multiHeader,
+ headerTwo: tHeader,
+ merges,
+ data,
+ filename
+ })
+ },
+
+ getLastMouth (str = '-') {
+ let today = new Date()
+ let lastMouth = new Date()
+ let nowTime = today.getTime()
+ let ms = 24 * 3600 * 1000 * -30
+ today.setTime(parseInt(nowTime))
+ lastMouth.setTime(parseInt(nowTime + ms))
+ let oYear = today.getFullYear()
+ let oMoth = (today.getMonth() + 1).toString()
+ if (oMoth.length <= 1) oMoth = "0" + oMoth
+ let oDay = today.getDate().toString()
+ if (oDay.length <= 1) oDay = "0" + oDay
+ let mYear = lastMouth.getFullYear()
+ let mMoth = (lastMouth.getMonth() + 1).toString()
+ if (mMoth.length <= 1) mMoth = "0" + mMoth
+ let mDay = lastMouth.getDate().toString()
+ if (mDay.length <= 1) mDay = "0" + mDay
+ let todayDate = oYear + str + oMoth + str + oDay
+ let lastMouthDate = mYear + str + mMoth + str + mDay//暂时改成2024-01-01
+ return ['2024-01-01', todayDate]
+ },
+
rowSave (row, done, loading) {
if (row.imageUrls.length > 0) {
var urls = []
@@ -134,7 +430,7 @@
label
}).then(
() => {
- this.onLoad(this.page)
+ this.onLoad()
this.$message({
type: "success",
message: "操作成功!",
@@ -172,7 +468,7 @@
label
}).then(
() => {
- this.onLoad(this.page)
+ this.onLoad()
this.$message({
type: "success",
message: "操作成功!",
@@ -197,7 +493,7 @@
return removeTask(row)
})
.then(() => {
- this.onLoad(this.page)
+ this.onLoad()
this.$message({
type: "success",
@@ -208,14 +504,17 @@
searchReset () {
this.query = {}
- this.onLoad(this.page)
+ this.dateTime = this.getLastMouth()
+ this.onLoad()
},
- searchChange (params, done) {
- this.query = params
+ searchChange (params) {
+ this.query = this.dateTime ? {
+ startTime: this.dateTime[0],
+ endTime: this.dateTime[1],
+ } : {}
this.page.currentPage = 1
- this.onLoad(this.page, params)
- done()
+ this.onLoad()
},
selectionChange (list) {
@@ -243,7 +542,7 @@
return remove(this.ids)
})
.then(() => {
- this.onLoad(this.page)
+ this.onLoad()
this.$message({
type: "success",
message: "操作成功!",
@@ -272,9 +571,98 @@
// this.onLoad(this.page, this.query)
},
- onLoad (page, params = {}) {
+ onLoad () {
this.loading = true
- this.loading = false
+ if (!this.query.startTime) {
+ this.query = {
+ startTime: this.getLastMouth()[0],
+ endTime: this.getLastMouth()[1],
+ }
+ }
+ if ('startTime' in this.query) {
+ this.query.startTime += ' 00:00:00'
+ }
+ if ('endTime' in this.query) {
+ this.query.endTime += ' 23:59:59'
+ }
+ getYHTJList(this.query).then(res => {
+ console.log('getZGQKList', res.data.data)
+ const data = res.data.data
+ // 总合计行
+ let countItem = {
+ name: '信州区',
+ xscjgqy: 0,
+ xmrxycs: 0,
+ xgwylcs: 0,
+ xcycs: 0,
+ xwb: 0,
+ xlg: 0,
+ xsd: 0,
+ yey: 0,
+ yly: 0,
+ xwpxjg: 0,
+ xxx: 0,
+ zs: 0,
+ xxx: 0,
+ yy: 0,
+ count: 0
+ }
+ data.forEach(item => {
+ // 统计总数
+ item.count = 0
+ // 检查时间
+ item.dateTime = ''
+
+ item.nineTypeStatistics.forEach(element => {
+ item.count += Number(element.number)
+ if (element.dict_value == '小生产加工企业') {
+ item.xscjgqy = element.number
+ countItem.xscjgqy += Number(item.xscjgqy)
+ } else if (element.dict_value == '小美容洗浴场所') {
+ item.xmrxycs = element.number
+ countItem.xmrxycs += Number(item.xmrxycs)
+ } else if (element.dict_value == '小歌舞娱乐场所') {
+ item.xgwylcs = element.number
+ countItem.xgwylcs += Number(item.xgwylcs)
+ } else if (element.dict_value == '小餐饮场所') {
+ item.xcycs = element.number
+ countItem.xcycs += Number(item.xcycs)
+ } else if (element.dict_value == '小网吧') {
+ item.xwb = element.number
+ countItem.xwb += Number(item.xwb)
+ } else if (element.dict_value == '小旅馆') {
+ item.xlg = element.number
+ countItem.xlg += Number(item.xlg)
+ } else if (element.dict_value == '小商店') {
+ item.xsd = element.number
+ countItem.xsd += Number(item.xsd)
+ } else if (element.dict_value == '幼儿园') {
+ item.yey = element.number
+ countItem.yey += Number(item.yey)
+ } else if (element.dict_value == '养老院') {
+ item.yly = element.number
+ countItem.yly += Number(item.yly)
+ } else if (element.dict_value == '校外培训机构') {
+ item.xwpxjg = element.number
+ countItem.xwpxjg += Number(item.xwpxjg)
+ } else if (element.dict_value == '学校') {
+ item.xxx = element.number
+ countItem.xxx += Number(item.xxx)
+ } else if (element.dict_value == '诊所') {
+ item.zs = element.number
+ countItem.zs += Number(item.zs)
+ } else if (element.dict_value == '医院') {
+ item.yy = element.number
+ countItem.yy += Number(item.yy)
+ }
+ })
+ countItem.count += Number(item.count)
+ })
+ data.push(countItem)
+ this.data = data
+ this.loading = false
+ this.selectionClear()
+ })
}
}
}
@@ -284,4 +672,40 @@
.avue-upload__icon {
line-height: 6;
}
+
+.search-box {
+ display: flex;
+ margin-bottom: 20px;
+
+ .date-box {
+ display: flex;
+
+ .name {
+ margin-right: 10px;
+ display: flex;
+ align-items: center;
+ font-size: 14px;
+ }
+
+ :deep(.el-input__inner) {
+ height: 32px;
+ }
+
+ :deep(.el-date-editor .el-range__icon),
+ :deep(.el-date-editor .el-range__close-icon) {
+ line-height: 26px;
+ }
+ }
+
+
+ .btn-box {
+ margin-left: 20px;
+
+ :deep(.el-button) {
+ width: 76px;
+ height: 32px;
+ padding: 0;
+ }
+ }
+}
</style>
--
Gitblit v1.9.3