| | |
| | | <script > |
| | | import * as XLSX from 'xlsx/xlsx.mjs'; |
| | | import dayjs from 'dayjs'; |
| | | import axiosInstance from '../utils/request.js' |
| | | import axiosInstanceInstance from '../utils/request.js' |
| | | import TimeSelect from '../sfc/TimeSelect.vue'; |
| | | |
| | | // import ShopNameAndID from '../sfc/TimeSelect.vue'; |
| | |
| | | }, |
| | | data() { |
| | | return { |
| | | // 空状态 |
| | | isNoData:false, |
| | | // 下拉框一开始展示的名字 |
| | | beginShowShopName:[], |
| | | options: {}, |
| | |
| | | ], |
| | | // 选择店铺名 |
| | | devId: [null,null], |
| | | optionsShop: [ |
| | | { |
| | | value: '付小姐在成都', |
| | | label: '付小姐在成都', |
| | | children: [ |
| | | { |
| | | value: 'qinshi_31010320210010', |
| | | label: 'qinshi_31010320210010' |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | value: '吉刻联盟', |
| | | label: '吉刻联盟 ', |
| | | children: [ |
| | | { |
| | | value: 'qinshi_31010320200006', |
| | | label: 'qinshi_31010320200006' |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | value: '家在塔啦', |
| | | label: '家在塔啦', |
| | | children: [ |
| | | { |
| | | value: 'hengzhiyuan_64480047347215', |
| | | label: 'hengzhiyuan_64480047347215' |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | value: '狼来了', |
| | | label: '狼来了 ', |
| | | children: [ |
| | | { |
| | | value: 'zhuoquan_31011020175012', |
| | | label: 'zhuoquan_31011020175012' |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | value: '乐凯撒星游店', |
| | | label: '乐凯撒星游店', |
| | | children: [ |
| | | { |
| | | value: 'qinshi_31010320200007', |
| | | label: 'qinshi_31010320200007' |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | value: '馨远美食小镇(哈尼美食广场)', |
| | | label: '馨远美食小镇(哈尼美食广场)', |
| | | children: [ |
| | | { |
| | | value: 'hengzhiyuan_64480047078091', |
| | | label: 'hengzhiyuan_64480047078091' |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | value: '棒约翰', |
| | | label: '棒约翰', |
| | | children: [ |
| | | { |
| | | value: 'qinshi_31010320190005', |
| | | label: 'qinshi_31010320190005' |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | value: '弄堂咪道', |
| | | label: '弄堂咪道', |
| | | children: [ |
| | | { |
| | | value: 'zhuoquan_31011020175008', |
| | | label: 'zhuoquan_31011020175008' |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | value: '杨记齐齐哈尔烤肉', |
| | | label: '杨记齐齐哈尔烤肉', |
| | | children: [ |
| | | { |
| | | value: 'zhuoquan_31011020175002', |
| | | label: 'zhuoquan_31011020175002' |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | value: '上海稔传餐饮管理有限公司(人生一串)', |
| | | label: '上海稔传餐饮管理有限公司(人生一串)', |
| | | children: [ |
| | | { |
| | | value: 'GLHB00000000016004', |
| | | label: 'GLHB00000000016004' |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | value: '缘家', |
| | | label: '缘家', |
| | | children: [ |
| | | { |
| | | value: 'fucheng310104200914', |
| | | label: 'fucheng310104200914' |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | value: '泉盛餐饮(上海)有限公司(食其家)', |
| | | label: '泉盛餐饮(上海)有限公司(食其家)', |
| | | children: [ |
| | | { |
| | | value: 'GLHB00000000016155', |
| | | label: 'GLHB00000000016155' |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | value: '丰茂烤串', |
| | | label: '丰茂烤串', |
| | | children: [ |
| | | { |
| | | value: 'GLHB00000000016011', |
| | | label: 'GLHB00000000016011' |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | value: '上海泰煌餐饮管理有限公司(泰煌鸡)', |
| | | label: '上海泰煌餐饮管理有限公司(泰煌鸡)', |
| | | children: [ |
| | | { |
| | | value: 'GLHB00000000010279', |
| | | label: 'GLHB00000000010279' |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | value: '徐汇区辰熙餐馆(小铁君串烧居酒屋)', |
| | | label: '徐汇区辰熙餐馆(小铁君串烧居酒屋)', |
| | | children: [ |
| | | { |
| | | value: 'GLHB00000000010504', |
| | | label: 'GLHB00000000010504' |
| | | } |
| | | ] |
| | | } |
| | | ] |
| | | |
| | | }; |
| | | }, |
| | | |
| | |
| | | |
| | | beforeRouteUpdate(to, from, next) { |
| | | if (to.name === this.$route.name) { |
| | | this.backMinuteDataAWeekAgo(); |
| | | |
| | | this.backMinuteDataAWeekAgo(); |
| | | } |
| | | next(); |
| | | }, |
| | |
| | | }, |
| | | // 返回前一周分钟数据表数据 |
| | | backMinuteDataAWeekAgo() { |
| | | |
| | | |
| | | // 打开页面加载最近一周的数据 |
| | | this.loading = true; |
| | | // 给级联选择器设置默认的选择项 |
| | | this.beginShowShopName = ['付小姐在成都', 'qinshi_31010320210010']; |
| | | this.devId = ['付小姐在成都', 'qinshi_31010320210010']; |
| | |
| | | // 给时间选择器设置默认时间 |
| | | // this.beginTime = dayjs().subtract(1, 'week').format('YYYY-MM-DD HH:mm:ss'); |
| | | // this.endTime = dayjs().format('YYYY-MM-DD HH:mm:ss'); |
| | | |
| | | // 将时间同步给导出时间 |
| | | this.exportBeginTime =this.beginTime |
| | | this.exportEndTime = this.endTime |
| | | |
| | | console.log(this.currentDateTime, this.oneWeekAgoDateTime); |
| | | |
| | |
| | | params['devId'] = 'qinshi_31010320210010'; |
| | | params['beginTime'] = this.beginTime; |
| | | params['endTime'] = this.endTime; |
| | | |
| | | axiosInstance |
| | | this.loading = true; |
| | | axiosInstanceInstance |
| | | .get('/fume/history', { params: params }) |
| | | .then((response) => { |
| | | // 保存返回的 |
| | | this.exceedingData = response.data.data; |
| | | this.loading = false; |
| | | if(response.data.data.length==0){ |
| | | ElMessage('该时段无数据') |
| | | this.isNoData = true |
| | | return |
| | | } |
| | | |
| | | // 分页 |
| | | this.total = this.exceedingData.length; |
| | | // 默认显示第一页 |
| | |
| | | alert('时间跨度不能超过一个月'); |
| | | return; |
| | | } |
| | | // 将时间同步给导出时间 |
| | | this.exportBeginTime =this.beginTime |
| | | this.exportEndTime = this.endTime |
| | | let params = {}; |
| | | if (this.devId[1]) { |
| | | params['devId'] = this.devId[1]; |
| | |
| | | if (this.endTime) { |
| | | params['endTime'] = this.endTime; |
| | | } |
| | | axiosInstance |
| | | this.loading=true |
| | | axiosInstanceInstance |
| | | .get('/fume/history', { params: params }) |
| | | .then((response) => { |
| | | |
| | | // 保存返回的 |
| | | this.exceedingData = response.data.data; |
| | | this.loading=false |
| | | |
| | | if(response.data.data.length==0){ |
| | | ElMessage('该时段无数据') |
| | | this.isNoData = true |
| | | return |
| | | } |
| | | // 移除空数据状态 |
| | | this.isNoData = false |
| | | // this.displayData = response.data.data //表格渲染 |
| | | // 分页 |
| | | this.total = this.exceedingData.length; |
| | |
| | | params['exportEndTime'] = this.exportEndTime; |
| | | } |
| | | |
| | | axiosInstance.get('/fume/export', { params: params }).then((result) => { |
| | | axiosInstanceInstance.get('/fume/export', { params: params }).then((result) => { |
| | | this.exportData = result.data.data; |
| | | console.log(this.exportData); |
| | | }); |
| | |
| | | // 编辑表头行 修改表头 |
| | | xls['A1'].v = '设备编号'; |
| | | xls['B1'].v = '店铺名称'; |
| | | xls['C1'].v = '报警时间'; |
| | | xls['C1'].v = '采集时间'; |
| | | xls['D1'].v = '风机电流(A)'; |
| | | xls['E1'].v = '净化器电流(A)'; |
| | | xls['F1'].v = '油烟浓度(mg/m³)'; |
| | |
| | | </div> |
| | | |
| | | |
| | | <div v-show="!isSwitch" class="chart-container"> |
| | | <div v-show="!isSwitch && !isNoData" v-loading="loading" class="chart-container"> |
| | | <lineChart :chartData="options"></lineChart> |
| | | </div> |
| | | |
| | | <!-- 表格数据 --> |
| | | <div v-show="isSwitch" class="container"> |
| | | <div v-show="isSwitch && !isNoData" v-loading="loading" class="container"> |
| | | <el-table :data="displayData" style="width: 100%; margin-top: 25px" height="500px" table-layout="auto"> |
| | | <el-table-column fixed prop="mvStatCode" label="设备编号"> |
| | | <template #default="{ row }"> |
| | |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <el-table-column prop="mvDataTime" label="采样时间"> |
| | | <el-table-column prop="mvDataTime" label="采集时间"> |
| | | <template #default="{ row }"> |
| | | <el-tooltip effect="dark" :content="row.mvDataTime"> |
| | | <div class="cell ellipsis">{{ row.mvDataTime }}</div> |
| | |
| | | |
| | | <!-- layout="total, sizes, prev, pager, next, jumper" --> |
| | | </div> |
| | | <el-empty v-show="isNoData" :image-size="200" /> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | flex-direction: column; |
| | | height: 100vh; |
| | | } |
| | | :deep().el-dialog { |
| | | border-radius: 9px; |
| | | } |
| | | @media screen and (max-width: 768px) { |
| | | /* 在小屏幕上应用的样式 */ |
| | | } |