已修改22个文件
已删除10个文件
已添加11个文件
已重命名4个文件
| | |
| | | "watchEffect": true, |
| | | "watchPostEffect": true, |
| | | "watchSyncEffect": true, |
| | | "ElMessage": true |
| | | "ElMessage": true, |
| | | "ElMessageBox": true |
| | | } |
| | | } |
| | |
| | | declare global { |
| | | const EffectScope: typeof import('vue')['EffectScope'] |
| | | const ElMessage: typeof import('element-plus/es')['ElMessage'] |
| | | const ElMessageBox: typeof import('element-plus/es')['ElMessageBox'] |
| | | const computed: typeof import('vue')['computed'] |
| | | const createApp: typeof import('vue')['createApp'] |
| | | const customRef: typeof import('vue')['customRef'] |
| | |
| | | ElAside: typeof import('element-plus/es')['ElAside'] |
| | | ElAutocomplete: typeof import('element-plus/es')['ElAutocomplete'] |
| | | ElAvatar: typeof import('element-plus/es')['ElAvatar'] |
| | | ElBreadcrumb: typeof import('element-plus/es')['ElBreadcrumb'] |
| | | ElBreadcrumbItem: typeof import('element-plus/es')['ElBreadcrumbItem'] |
| | | ElButton: typeof import('element-plus/es')['ElButton'] |
| | | ElCard: typeof import('element-plus/es')['ElCard'] |
| | | ElCheckbox: typeof import('element-plus/es')['ElCheckbox'] |
| | |
| | | ElMenuItem: typeof import('element-plus/es')['ElMenuItem'] |
| | | ElOption: typeof import('element-plus/es')['ElOption'] |
| | | ElPagination: typeof import('element-plus/es')['ElPagination'] |
| | | ElRadio: typeof import('element-plus/es')['ElRadio'] |
| | | ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup'] |
| | | ElRow: typeof import('element-plus/es')['ElRow'] |
| | | ElScrollbar: typeof import('element-plus/es')['ElScrollbar'] |
| | | ElSelect: typeof import('element-plus/es')['ElSelect'] |
| | | ElSkeleton: typeof import('element-plus/es')['ElSkeleton'] |
| | | ElSpace: typeof import('element-plus/es')['ElSpace'] |
| | | ElStatistic: typeof import('element-plus/es')['ElStatistic'] |
| | | ElSubMenu: typeof import('element-plus/es')['ElSubMenu'] |
| | | ElTable: typeof import('element-plus/es')['ElTable'] |
| | | ElTableColumn: typeof import('element-plus/es')['ElTableColumn'] |
| | |
| | | IEpArrowDown: typeof import('~icons/ep/arrow-down')['default'] |
| | | IEpBell: typeof import('~icons/ep/bell')['default'] |
| | | IEpDataLine: typeof import('~icons/ep/data-line')['default'] |
| | | IEpDownload: typeof import('~icons/ep/download')['default'] |
| | | IEpExpand: typeof import('~icons/ep/expand')['default'] |
| | | IEpFold: typeof import('~icons/ep/fold')['default'] |
| | | IEpHistogram: typeof import('~icons/ep/histogram')['default'] |
| | | IEpMonitor: typeof import('~icons/ep/monitor')['default'] |
| | | IEpSearch: typeof import('~icons/ep/search')['default'] |
| | | IEpStopwatch: typeof import('~icons/ep/stopwatch')['default'] |
| | | RouterLink: typeof import('vue-router')['RouterLink'] |
| | | RouterView: typeof import('vue-router')['RouterView'] |
| | |
| | | "dayjs": "^1.11.9", |
| | | "echarts": "^5.4.3", |
| | | "element-plus": "^2.3.6", |
| | | "js-cookie": "^3.0.1", |
| | | "pinia": "^2.1.3", |
| | | "sass": "^1.63.4", |
| | | "vue": "^3.3.4", |
| | |
| | | "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz", |
| | | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", |
| | | "dev": true |
| | | }, |
| | | "node_modules/js-cookie": { |
| | | "version": "3.0.1", |
| | | "resolved": "https://registry.npmmirror.com/js-cookie/-/js-cookie-3.0.1.tgz", |
| | | "integrity": "sha512-+0rgsUXZu4ncpPxRL+lNEptWMOWl9etvPHc/koSRp6MPwpRYAhmk0dUG00J4bxVV3r9uUzfo24wW0knS07SKSw==", |
| | | "engines": { |
| | | "node": ">=12" |
| | | } |
| | | }, |
| | | "node_modules/js-stringify": { |
| | | "version": "1.0.2", |
| | |
| | | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", |
| | | "dev": true |
| | | }, |
| | | "js-cookie": { |
| | | "version": "3.0.1", |
| | | "resolved": "https://registry.npmmirror.com/js-cookie/-/js-cookie-3.0.1.tgz", |
| | | "integrity": "sha512-+0rgsUXZu4ncpPxRL+lNEptWMOWl9etvPHc/koSRp6MPwpRYAhmk0dUG00J4bxVV3r9uUzfo24wW0knS07SKSw==" |
| | | }, |
| | | "js-stringify": { |
| | | "version": "1.0.2", |
| | | "resolved": "https://registry.npmmirror.com/js-stringify/-/js-stringify-1.0.2.tgz", |
| | |
| | | "dayjs": "^1.11.9", |
| | | "echarts": "^5.4.3", |
| | | "element-plus": "^2.3.6", |
| | | "js-cookie": "^3.0.1", |
| | | "pinia": "^2.1.3", |
| | | "sass": "^1.63.4", |
| | | "vue": "^3.3.4", |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import { $http } from '@/api/index.js'; |
| | | |
| | | export default { |
| | | /** |
| | | * æäº¤å®¡æ ¸ |
| | | * @paramï¼ å®¡æ ¸äººï¼å®¡æ ¸äººå¤æ³¨ï¼ä¼ä¸å¤æ³¨ï¼å¼å¸¸è®°å½ç¼å·ï¼ 该æ¡å¼å¸¸çå®¡æ ¸ç¶æ |
| | | * @returnsï¼ |
| | | */ |
| | | submitAudit(reviewer,checkerNotes,enterpriseNotes,id,status){ |
| | | const params = { |
| | | // checker:reviewer, |
| | | checkerContent:checkerNotes, |
| | | enterpriseContent:enterpriseNotes, |
| | | exceptionId:id, |
| | | auditStatus:status |
| | | } |
| | | if(reviewer == '' || reviewer == null){ |
| | | params.checker = 'admin' |
| | | }else{ |
| | | params.checker = reviewer |
| | | } |
| | | return $http.post('/dust/audit',params) |
| | | }, |
| | | |
| | | /** |
| | | * è¿åå®¡æ ¸è¡¨æææ°æ® |
| | | * @paramï¼ |
| | | * @returnsï¼ |
| | | */ |
| | | backAuditAllData(){ |
| | | return $http.get('dust/auditAllData') |
| | | }, |
| | | |
| | | /** |
| | | * æ´æ°å®¡æ ¸è®°å½ |
| | | * @paramï¼ å¼å¸¸ç¼å·Idï¼å®¡æ ¸äººå¤æ³¨ï¼ä¼ä¸å¤æ³¨ï¼è¯¥æ¡å¼å¸¸çå®¡æ ¸ç¶æ |
| | | * @returnsï¼ |
| | | */ |
| | | updateAudit(id,checkerContent,enterpriseContent,auditStatus){ |
| | | const params = { |
| | | exceptionId:id, |
| | | auditStatus:auditStatus, |
| | | } |
| | | if(checkerContent){ |
| | | params.checkerContent = checkerContent |
| | | } |
| | | if(enterpriseContent){ |
| | | params.enterpriseContent = enterpriseContent |
| | | } |
| | | return $http.put('/dust/auditUpdate',params) |
| | | }, |
| | | getAuditNumByTime(beginTime,endTime){ |
| | | if(beginTime!='' || endTime!=''){ |
| | | const params = { |
| | | beginTime:beginTime, |
| | | endTime:endTime |
| | | } |
| | | return $http.get('/dust/auditnum',{params:params}) |
| | | } |
| | | |
| | | } |
| | | }; |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import {$http} from '@/api/index.js'; |
| | | |
| | | export default { |
| | | |
| | | /** |
| | | * æ ¹æ®ç«ç¹ï¼æ¶é´æ®µæ¥è¯¢åå²è¡¨ä¸æææ°æ® |
| | | * @paramï¼ |
| | | * @returnsï¼ |
| | | */ |
| | | submitSetting(argsObj){ |
| | | |
| | | return $http.post('dust/setting',argsObj); |
| | | } |
| | | |
| | | } |
| | |
| | | _params.exceptionType = exceptionType; |
| | | } |
| | | return $http.get('/dust/exceptiondata1', { params: _params }); |
| | | }, |
| | | |
| | | getSitesNum(){ |
| | | return $http.get('/dust/sitename'); |
| | | } |
| | | |
| | | |
| | | |
| | | }; |
| | |
| | | return $http.get('dust/analysisall',{params:argsObj}); |
| | | }, |
| | | |
| | | /** |
| | | * æ ¹æ®ç«ç¹ï¼æ¶é´æ®µæ¥è¯¢åå²è¡¨ä¸æææ°æ® |
| | | * @paramï¼ |
| | | * @returnsï¼ |
| | | */ |
| | | fetchAlSiteData(argsObj){ |
| | | |
| | | return $http.get('dust/historyall',{params:argsObj}); |
| | |
| | | <script> |
| | | import { isCollapse } from './isCollapse'; |
| | | import { selectedName } from './selectName'; |
| | | |
| | | export default { |
| | | data() { |
| | | return { |
| | | menuHeight: '600px', |
| | | isCollapseAside: isCollapse, |
| | | selected: selectedName, |
| | | optionClick: [ |
| | | ' æ°æ®é£é©æ¨¡å', |
| | | 'æ°æ®é£é©æå', |
| | | 'é£è¡å·¡æ£', |
| | | 'ç«ç¹å®¡æ ¸è¾
å©', |
| | | 'å岿°æ®ç®¡ç', |
| | | 'æ°æ®æ¥å
¥ç®¡ç', |
| | | 'ä¸å¡æ¥è¡¨', |
| | | 'æ°æ®æ¥å
¥é
ç½®', |
| | | ] |
| | | }; |
| | | }, |
| | | methods:{ |
| | | calMenuHeight() { |
| | | const h1 = this.$refs.headerRef.$el.offsetHeight; |
| | | return `calc(100vh - ${h1}px `; |
| | | return `calc(100vh - ${h1}px - 8px`; |
| | | }, |
| | | }, |
| | | mounted(){ |
| | | this.menuHeight = this.calMenuHeight(); |
| | | console.log('meta:',this.$route.matched); |
| | | } |
| | | }; |
| | | </script> |
| | |
| | | class="el-menu-vertical-demo" |
| | | default-active="2" |
| | | text-color="#fff" |
| | | @open="handleOpen" |
| | | @close="handleClose" |
| | | router |
| | | :collapse="isCollapseAside" |
| | | > |
| | | <el-row ref="headerRef" class="header"> |
| | | <el-space> |
| | | <el-link href="/hdata" class="logo" > |
| | | <!-- <img src="@/assets/companylogo.png" alt="" /> --> |
| | | <h1>å¨çº¿çæµæ°æ®è´¨éè¯ä¼°ä¸é£é©åæ</h1> |
| | | |
| | | </el-link> |
| | | |
| | | </el-space> |
| | | <div class="line"> |
| | | </div> |
| | | |
| | | </el-row> |
| | | |
| | | <hr/> |
| | | <el-scrollbar :height="menuHeight"> |
| | | |
| | | <el-sub-menu index="1"> |
| | |
| | | <span class="parent-title">é£é©è¯ä¼°</span> |
| | | </template> |
| | | |
| | | <el-menu-item index="avgDay" @click="selected = optionClick[0]"> |
| | | <el-menu-item index="avgDay" > |
| | | <el-icon><i-ep-Stopwatch /></el-icon> |
| | | æ°æ®é£é©æ¨¡å |
| | | </el-menu-item> |
| | | <el-menu-item index="analysis" @click="selected = optionClick[1]"> |
| | | <el-menu-item index="analysis" > |
| | | <el-icon><i-ep-Stopwatch /></el-icon> |
| | | æ°æ®é£é©æå |
| | | æ°æ®æåæ¸
å |
| | | </el-menu-item><el-menu-item index="riskrank" > |
| | | <el-icon><i-ep-Stopwatch /></el-icon> |
| | | 综åé£é©æå |
| | | </el-menu-item> |
| | | |
| | | |
| | | </el-sub-menu> |
| | | |
| | | |
| | |
| | | <el-icon><i-ep-Histogram /></el-icon> |
| | | <span class="parent-title">线ä¸å·¡æ£</span> |
| | | </template> |
| | | <el-menu-item index="edata" @click="selected = optionClick[2]"> |
| | | <el-menu-item index="edata" > |
| | | <el-icon><i-ep-Bell /></el-icon> |
| | | é£è¡å·¡æ£ |
| | | </el-menu-item> |
| | | |
| | | <el-menu-item index="testdata" @click="selected = optionClick[3]"> |
| | | <el-menu-item index="testData"> |
| | | <el-icon><i-ep-Bell /></el-icon> |
| | | ç«ç¹å®¡æ ¸è¾
å© |
| | | </el-menu-item> |
| | |
| | | </template> |
| | | |
| | | |
| | | <el-menu-item index="hdata" @click="selected = optionClick[4]"> |
| | | <el-menu-item index="hdata" > |
| | | <el-icon><i-ep-Histogram /></el-icon> |
| | | å岿°æ®ç®¡ç |
| | | </el-menu-item> |
| | | <!-- <el-menu-item index="management" @click="selected = optionClick[5]"> |
| | | |
| | | <!-- <el-menu-item index="management" > |
| | | <el-icon><i-ep-Histogram /></el-icon> |
| | | æ°æ®æ¥å
¥ç®¡ç |
| | | </el-menu-item> |
| | | <el-menu-item index="report" @click="selected = optionClick[6]"> |
| | | <el-menu-item index="report" > |
| | | <el-icon><i-ep-Histogram /></el-icon> |
| | | ä¸å¡æ¥è¡¨ |
| | | </el-menu-item> --> |
| | | |
| | | </el-sub-menu> |
| | | |
| | | <!-- <el-sub-menu index="4"> |
| | | <el-sub-menu index="4"> |
| | | <template #title> |
| | | <el-icon><i-ep-DataLine /></el-icon> |
| | | <span class="parent-title">é
置管ç</span> |
| | | </template> |
| | | |
| | | <el-menu-item index="setting" @click="selected = optionClick[7]"> |
| | | <el-menu-item index="setting" > |
| | | <el-icon><i-ep-Histogram /></el-icon> |
| | | æ°æ®æ¥å
¥é
ç½® |
| | | </el-menu-item> |
| | | </el-sub-menu> --> |
| | | </el-sub-menu> |
| | | </el-scrollbar> |
| | | |
| | | </el-menu> |
| | |
| | | <style lang="scss" scoped> |
| | | .el-aside { |
| | | background-color: #2876aa; |
| | | |
| | | |
| | | height: 100vh; |
| | | width: auto; |
| | | } |
| | |
| | | |
| | | width: 220px; |
| | | border-right: none; |
| | | |
| | | &.el-menu--collapse { |
| | | //ä¾§è¾¹æ æå æ¶çæ ·å¼ |
| | | width: 65px; |
| | | |
| | | & h1 { |
| | | //æå æ¶éèh1æå |
| | | display: none; |
| | | } |
| | | & span { |
| | | display: none; |
| | | } |
| | | & hr { |
| | | display: none; |
| | | } |
| | | } |
| | |
| | | text-decoration: none; |
| | | color: black; |
| | | margin-left: 20px; |
| | | img { |
| | | width: 32px; |
| | | height: 32px; |
| | | } |
| | | margin-right: 20px; |
| | | // img { |
| | | // width: 32px; |
| | | // height: 32px; |
| | | // } |
| | | } |
| | | |
| | | |
| | |
| | | font-weight: bold; |
| | | font-size: 18px; |
| | | } |
| | | // .line { |
| | | // width: 180px; |
| | | // border: 1px solid rgb(255,255,255,0.2); |
| | | // margin: 0px; |
| | | // padding: 0px; |
| | | // } |
| | | |
| | | </style> |
| | |
| | | <script > |
| | | import { isCollapse } from './isCollapse' |
| | | import { selectedName } from './selectName' |
| | | import BreadCrumb from '@/sfc/BreadCrumb.vue' |
| | | export default { |
| | | |
| | | components:{ |
| | | BreadCrumb, |
| | | }, |
| | | data() { |
| | | return{ |
| | | isCollapseHeader: isCollapse , //æå |
| | |
| | | <i-ep-Expand v-show="isCollapseHeader" /> |
| | | <i-ep-Fold v-show="!isCollapseHeader"/> |
| | | </el-icon> |
| | | {{ selected }} |
| | | <!-- {{ selected }} --> |
| | | |
| | | <!-- é¢å
å± --> |
| | | <!-- <el-breadcrumb separator="/"> |
| | | <el-breadcrumb-item :to="{ path: '/hdata' }">主页</el-breadcrumb-item> |
| | | <el-breadcrumb-item><a href="/">promotion management</a></el-breadcrumb-item> --> |
| | | <!-- <el-breadcrumb-item>promotion list</el-breadcrumb-item> |
| | | <el-breadcrumb-item>promotion detail</el-breadcrumb-item> --> |
| | | <!-- </el-breadcrumb> --> |
| | | |
| | | |
| | | <BreadCrumb></BreadCrumb> |
| | | |
| | | <!-- 䏿èå --> |
| | | <el-dropdown> |
| | |
| | | // import './assets/main.css' |
| | | |
| | | import { createApp } from 'vue' |
| | | import { createPinia } from 'pinia' |
| | | |
| | | // import { createPinia } from 'pinia' |
| | | import Cookie from 'js-cookie' |
| | | import App from './App.vue' |
| | | import router from './router' |
| | | |
| | |
| | | |
| | | const app = createApp(App) |
| | | |
| | | |
| | | // function SecretPiniaPlugin() { |
| | | // return { secret: 'the cake is a lie',vue:'333.0' } |
| | | // } |
| | | |
| | | // const pinia = createPinia() |
| | | // // å°æä»¶æä¾ç» pinia |
| | | // pinia.use(SecretPiniaPlugin) |
| | | // pinia.use(() => ({'天':'é¨å¤©'})) |
| | | |
| | | router.beforeEach((to,from,next)=>{ |
| | | const token = Cookie.get('token') |
| | | if(!token && to.name!='login'){ |
| | | next({name:'login'}) |
| | | } |
| | | // tokenåå¨ï¼ä½ç¨æ·åæ¢çæ¯ç»å½é¡µé¢æ¶ï¼è¿åé»è®¤ä¸»çé¢ |
| | | else if(token && to.name =='login'){ |
| | | next({name:'edata'}) |
| | | }else{ |
| | | next() |
| | | } |
| | | }) |
| | | |
| | | // axios.defaults.baseURL = 'http://192.168.1.4:8081' |
| | | axios.defaults.baseURL = 'http://localhost:8081' |
| | | app.config.globalProperties.$http = axios |
| | | |
| | | app.use(createPinia()) |
| | | // app.use(pinia) |
| | | app.use(router) |
| | | |
| | | |
| | |
| | | { |
| | | path: '/layout', |
| | | name: 'home', |
| | | meta: { title: 'é¦é¡µ' }, |
| | | component: () => import('@/components/layout/AppLayout.vue'), |
| | | children: [ |
| | | // æ°æ®å驿¨¡å |
| | | { |
| | | path:"/avgDay", |
| | | name:'avgDay', |
| | | component: () => import('@/views/line_graph/DataRiskModel.vue') |
| | | }, |
| | | |
| | | // æ°æ®å驿¨¡å |
| | | { |
| | | path: "/avgDay", |
| | | name: 'avgDay', |
| | | meta: { title: 'æ°æ®å驿¨¡å' }, |
| | | component: () => import('@/views/line_graph/DataRiskModel.vue') |
| | | }, |
| | | |
| | | // æ°æ®é£é©æå |
| | | { |
| | | path: "/analysis", |
| | | name: 'analysis', |
| | | meta: { title: 'æ°æ®é£é©æå' }, |
| | | component: () => import('@/views/line_graph/DataRiskRank.vue') |
| | | }, |
| | | // æ°æ®é£é©æå |
| | | { |
| | | path: "/riskrank", |
| | | name: 'riskrank', |
| | | meta: { title: 'æ°æ®é£é©æå' }, |
| | | component: () => import('@/views/line_graph/SiteComprehensiveRskRanking.vue') |
| | | }, |
| | | |
| | | // é£è¡å·¡æ£ |
| | | { |
| | | path: "/edata", |
| | | name: 'edata', |
| | | meta: { title: 'é£è¡å·¡æ£' }, |
| | | component: () => import('@/views/exception/FlightInspection.vue') |
| | | }, |
| | | |
| | | // æ°æ®é£é©æå |
| | | { |
| | | path:"/analysis", |
| | | name:'analysis', |
| | | component: () => import('@/views/line_graph/DataRiskRank.vue') |
| | | }, |
| | | |
| | | // å岿°æ®ç®¡ç |
| | | { |
| | | path:"/hdata", |
| | | name:'hdata', |
| | | component: () => import('@/views/origin_data/HistoryData.vue') |
| | | }, |
| | | |
| | | // é£è¡å·¡æ£ |
| | | { |
| | | path:"/edata", |
| | | name:'edata', |
| | | component: () => import('@/views/exception/FlightInspection.vue') |
| | | }, |
| | | |
| | | // ç«ç¹å®¡æ ¸è¾
å© |
| | | { |
| | | path:"/testdata", |
| | | name:'testdata', |
| | | component: () => import('@/views/exception/SiteAuditAssistance.vue') |
| | | }, |
| | | // ç«ç¹å®¡æ ¸è¾
å© |
| | | { |
| | | path: "/testData", |
| | | name: 'testData', |
| | | meta: { title: 'ç«ç¹å®¡æ ¸è¾
å©' }, |
| | | component: () => import('@/views/exception/SiteAuditAssistance.vue') |
| | | }, |
| | | |
| | | // æ°æ®æ¥å
¥é
ç½® |
| | | { |
| | | path:"/setting", |
| | | name:'setting', |
| | | component: () => import('@/views/setting/SetConfiguration.vue') |
| | | }, |
| | | |
| | | { |
| | | path: "/hdata", |
| | | name: 'hdata', |
| | | meta: { title: 'å岿°æ®ç®¡ç' }, |
| | | component: () => import('@/views/data_management/HistoryData.vue') |
| | | }, |
| | | // æ°æ®æ¥å
¥ç®¡ç |
| | | { |
| | | path: "/management", |
| | | name: 'management', |
| | | meta: { title: 'æ°æ®æ¥å
¥ç®¡ç' }, |
| | | component: () => import('@/views/data_management/DataAccessManagement.vue') |
| | | }, |
| | | |
| | | // æ°æ®æ¥å
¥ç®¡ç |
| | | { |
| | | path:"/management", |
| | | name:'management', |
| | | component: () => import('@/views/origin_data/DataAccessManagement.vue') |
| | | }, |
| | | |
| | | // ä¸å¡æ¥è¡¨ |
| | | { |
| | | path:"/report", |
| | | name:'report', |
| | | component: () => import('@/views/origin_data/BusinessReport.vue') |
| | | }, |
| | | |
| | | // ä¸å¡æ¥è¡¨ |
| | | { |
| | | path: "/report", |
| | | name: 'report', |
| | | meta: { title: 'ä¸å¡æ¥è¡¨' }, |
| | | component: () => import('@/views/data_management/BusinessReport.vue') |
| | | }, |
| | | |
| | | // æ°æ®æ¥å
¥é
ç½® |
| | | { |
| | | path: "/setting", |
| | | name: 'setting', |
| | | meta: { title: 'æ°æ®æ¥å
¥é
ç½®' }, |
| | | component: () => import('@/views/setting/SetConfiguration.vue') |
| | | }, |
| | | |
| | | ], |
| | | }, |
| | | // ç»éé¡µé¢ |
| | | { |
| | | path:"/login", |
| | | name:'fst', |
| | | path: "/login", |
| | | name: 'login', |
| | | component: () => import('@/views/login/LoginSystem.vue') |
| | | |
| | | }, |
| | | { |
| | | }, |
| | | { |
| | | path: '/', |
| | | redirect:'/hdata' |
| | | redirect: '/edata' |
| | | }, |
| | | ] |
| | | }) |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <!-- é¢å
å± --> |
| | | <script> |
| | | import { ArrowRight } from '@element-plus/icons-vue' |
| | | export default { |
| | | data(){ |
| | | return{ |
| | | list:[] |
| | | } |
| | | }, |
| | | setup(){ |
| | | return {ArrowRight} |
| | | }, |
| | | watch:{ |
| | | $route(to,from){ |
| | | this.list = to.matched |
| | | } |
| | | }, |
| | | mounted (){ |
| | | this.list = this.$route.matched |
| | | }, |
| | | methods:{ |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <template> |
| | | <el-breadcrumb :separator-icon="ArrowRight"> |
| | | <el-breadcrumb-item v-for="item in list" :key="item.path" :to="{ path: '/' }"> |
| | | <router-link :to="item.path">{{ item.meta.title }}</router-link> |
| | | </el-breadcrumb-item> |
| | | </el-breadcrumb> |
| | | </template> |
| | | <style scoped> |
| | | .el-breadcrumb__inner a { |
| | | font-weight: 500; |
| | | color: rgba(0, 0, 0); |
| | | } |
| | | |
| | | .el-breadcrumb__item:last-child .el-breadcrumb__inner a { |
| | | color: rgb(209, 207, 207); |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <!-- |
| | | æç´¢æé® |
| | | ç¹å»æé®åï¼åç¶ç»ä»¶åçç¹å»äºä»¶ï¼ç±ç¶ç»ä»¶æ¥å®æç¹å»åçå
·ä½æ§è¡ |
| | | |
| | | **ç¶ç»ä»¶ |
| | | <ButtonClick content="æç´¢" type="warning" :loading="loading.queryButton" @do-search="doSearch"></ButtonClick> |
| | | --> |
| | | <script> |
| | | export default { |
| | | props:{ |
| | | // æé®æå |
| | | content:{ |
| | | type:String, |
| | | default:'ç¹å»' |
| | | }, |
| | | // æé®æ ·å¼ |
| | | type:{ |
| | | type:String, |
| | | default:'success' |
| | | }, |
| | | // å è½½ææ |
| | | loading:{ |
| | | type:Boolean, |
| | | default:false |
| | | }, |
| | | size:{ |
| | | type:String, |
| | | default:'default' |
| | | } |
| | | }, |
| | | emits:['doSearch' ], |
| | | } |
| | | </script> |
| | | |
| | | <template> |
| | | <div> |
| | | <el-button :type="type" :loading="loading" :size="size" @click="$emit('doSearch')"> |
| | | <el-icon > |
| | | <i-ep-Search/> |
| | | </el-icon> |
| | | {{ content }} |
| | | </el-button> |
| | | </div> |
| | | </template> |
| | | <style scoped> |
| | | .el-icon { |
| | | margin-right: 6px; |
| | | font-size: 1.2em; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <!-- |
| | | å¯¼åºæExcelç»ä»¶ |
| | | |
| | | **ç¶ç»ä»¶ |
| | | <ButtonExportExcel content="å¯¼åºæ°æ®" type="success" :loading="exportButton" @do-export="exportDom"></ButtonExportExcel> |
| | | --> |
| | | <script> |
| | | export default { |
| | | props: { |
| | | // æé®æå |
| | | content: { |
| | | type: String, |
| | | default: 'å¯¼åºæ°æ®' |
| | | }, |
| | | // æé®æ ·å¼ |
| | | type: { |
| | | type: String, |
| | | default: 'success' |
| | | }, |
| | | // å è½½ææ |
| | | loading: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | size: { |
| | | type: String, |
| | | default: 'default' |
| | | } |
| | | }, |
| | | emits: ['doExport'], |
| | | } |
| | | </script> |
| | | |
| | | <template> |
| | | <el-button :type="type" :size="size" @click="$emit('doExport')" :loading="loading" round> |
| | | <el-icon > |
| | | <i-ep-Download/> |
| | | </el-icon> |
| | | {{ content }} |
| | | </el-button> |
| | | </template> |
| | | <style scoped> |
| | | .el-icon { |
| | | margin-right: 6px; |
| | | margin-bottom:2px; |
| | | font-size: 1.2em; |
| | | } |
| | | |
| | | </style> |
| | |
| | | *** |
| | | --> |
| | | <script> |
| | | import dayjs from 'dayjs' |
| | | export default { |
| | | emits: ['submitTime'], |
| | | data() { |
| | | return{ |
| | | //ä¿åå¼å§åç»ææ¶é´ |
| | | // é便设置åå§å¼ ï¼mountedæ¶å设æ£ç¡®çï¼ç®çæ¯æ¹åæ¶é´äºè§¦åchange |
| | | time: ['2023-06-01 12:00:00', '2023-06-20 16:00:00'], |
| | | shortcuts:[], |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.initShortCuts() |
| | | this.initOneWeekAgoTime() |
| | | this.$emit('submitTime', this.time); |
| | | }, |
| | | methods: { |
| | | initShortCuts(){ |
| | | this.shortcuts = [ |
| | | { |
| | | text: 'å䏿¥', |
| | | value: () => { |
| | | const end = new Date() |
| | | const start = new Date() |
| | | start.setTime(start.getTime() - 3600 * 1000 * 24) |
| | | return [start, end] |
| | | }, |
| | | }, |
| | | |
| | | { |
| | | text: 'å7天', |
| | | value: () => { |
| | | const end = new Date() |
| | | const start = new Date() |
| | | start.setTime(start.getTime() - 3600 * 1000 * 24 * 7) |
| | | return [start, end] |
| | | }, |
| | | }, |
| | | { |
| | | text: 'å䏿', |
| | | value: () => { |
| | | const end = new Date() |
| | | const start = new Date() |
| | | start.setTime(start.getTime() - 3600 * 1000 * 24 * 30) |
| | | return [start, end] |
| | | }, |
| | | }, |
| | | |
| | | ] |
| | | }, |
| | | initOneWeekAgoTime(){ |
| | | // ç»æ¶é´éæ©å¨è®¾ç½®é»è®¤æ¶é´ä¸ºä¸å¨å |
| | | this.time[0] = dayjs().subtract(6, 'week').format('YYYY-MM-DD HH:mm:ss'); |
| | | this.time[1] = dayjs().format('YYYY-MM-DD HH:mm:ss'); |
| | | import dayjs from 'dayjs'; |
| | | export default { |
| | | props: { |
| | | timeType: { |
| | | type: String, |
| | | default: 'month' |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | emits: ['submitTime'], |
| | | data() { |
| | | return { |
| | | //ä¿åå¼å§åç»ææ¶é´ |
| | | // é便设置åå§å¼ ï¼mountedæ¶å设æ£ç¡®çï¼ç®çæ¯æ¹åæ¶é´äºè§¦åchange |
| | | time: ['2023-06-01 12:00:00', '2023-06-20 16:00:00'], |
| | | shortcuts: [] |
| | | }; |
| | | }, |
| | | mounted() { |
| | | this.initShortCuts(); |
| | | this.initOneWeekAgoTime(); |
| | | this.$emit('submitTime', this.time); |
| | | }, |
| | | methods: { |
| | | initShortCuts() { |
| | | this.shortcuts = [ |
| | | { |
| | | text: 'å䏿¥', |
| | | value: () => { |
| | | const end = new Date(); |
| | | const start = new Date(); |
| | | start.setTime(start.getTime() - 3600 * 1000 * 24); |
| | | return [start, end]; |
| | | } |
| | | }, |
| | | |
| | | { |
| | | text: 'å7天', |
| | | value: () => { |
| | | const end = new Date(); |
| | | const start = new Date(); |
| | | start.setTime(start.getTime() - 3600 * 1000 * 24 * 7); |
| | | return [start, end]; |
| | | } |
| | | }, |
| | | { |
| | | text: 'å䏿', |
| | | value: () => { |
| | | const end = new Date(); |
| | | const start = new Date(); |
| | | start.setTime(start.getTime() - 3600 * 1000 * 24 * 30); |
| | | return [start, end]; |
| | | } |
| | | } |
| | | ]; |
| | | }, |
| | | initOneWeekAgoTime() { |
| | | switch (this.timeType) { |
| | | case 'day': |
| | | this.time[0] = dayjs() |
| | | .subtract(1, 'day') |
| | | .format('YYYY-MM-DD HH:mm:ss'); |
| | | this.time[1] = dayjs().format('YYYY-MM-DD HH:mm:ss'); |
| | | break; |
| | | case 'week': |
| | | this.time[0] = dayjs() |
| | | .subtract(1, 'week') |
| | | .format('YYYY-MM-DD HH:mm:ss'); |
| | | this.time[1] = dayjs().format('YYYY-MM-DD HH:mm:ss'); |
| | | break; |
| | | case 'month': |
| | | this.time[0] = dayjs() |
| | | .subtract(1, 'month') |
| | | .format('YYYY-MM-DD HH:mm:ss'); |
| | | this.time[1] = dayjs().format('YYYY-MM-DD HH:mm:ss'); |
| | | break; |
| | | default: |
| | | this.time[0] = dayjs().subtract(1, 'month').format('YYYY-MM-DD HH:mm:ss'); |
| | | this.time[1] = dayjs().format('YYYY-MM-DD HH:mm:ss'); |
| | | } |
| | | } |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <template> |
| | | <div class="block"> |
| | | <span class="demonstration">èµ·æ¢æ¶é´ï¼</span> |
| | | <el-date-picker |
| | | v-model="time" |
| | | type="datetimerange" |
| | | :shortcuts="shortcuts" |
| | | range-separator="~" |
| | | start-placeholder="å¼å§æ¶é´" |
| | | end-placeholder="ç»ææ¶é´" |
| | | value-format="YYYY-MM-DD HH:mm:ss" |
| | | @change="$emit('submitTime', time)" |
| | | class="pick-date" |
| | | /> |
| | | <div class="block"> |
| | | <span class="demonstration">èµ·æ¢æ¶é´ï¼</span> |
| | | <div class="pick-date"> |
| | | <el-date-picker |
| | | v-model="time" |
| | | type="datetimerange" |
| | | :shortcuts="shortcuts" |
| | | range-separator="~" |
| | | start-placeholder="å¼å§æ¶é´" |
| | | end-placeholder="ç»ææ¶é´" |
| | | value-format="YYYY-MM-DD HH:mm:ss" |
| | | @change="$emit('submitTime', time)" |
| | | |
| | | /> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <style scoped> |
| | | <style scoped> |
| | | .block { |
| | | display: flex; |
| | | width: 570px; |
| | |
| | | font-size: 16px; |
| | | } |
| | | |
| | | .pick-date { |
| | | margin-top: 5px; |
| | | } |
| | | </style> |
| | | /* .pick-date { |
| | | width: 200px; |
| | | } */ |
| | | </style> |
ÎļþÃû´Ó src/stores/counter.ts ÐÞ¸Ä |
| | |
| | | import { ref, computed } from 'vue' |
| | | import { defineStore } from 'pinia' |
| | | |
| | | export const useCounterStore = defineStore('counter', () => { |
| | | |
| | | |
| | | const count = ref(0) |
| | | const doubleCount = computed(() => count.value * 2) |
| | | function increment() { |
| | | count.value++ |
| | | function increment(num) { |
| | | count.value = num + count.value + 1 |
| | | return 1 |
| | | } |
| | | |
| | | return { count, doubleCount, increment } |
| | |
| | | * @createTime:2023-08-18 |
| | | * @returnsï¼è¶
è¿ä¸ä¸ªæè¿åtrue,ä¸è¶
è¿ä¸ä¸ªæåè¿åfalse |
| | | */ |
| | | |
| | | function isExceedOneMonth(dateStr1, dateStr2) { |
| | | // è¶
è¿ä¸ä¸ªæï¼è¿åTrueï¼å¦åè¿åFalse |
| | | // å°æ¥æåç¬¦ä¸²è½¬ä¸ºæ¥æå¯¹è±¡ |
| | |
| | | return false; |
| | | } |
| | | |
| | | /** |
| | | * descriptionï¼ç¾åå·æ¯è¾å¤§å° |
| | | /** |
| | | * ç¾åå·æ¯è¾å¤§å° |
| | | * @paramï¼ aæ¯å¦å¤§äºb |
| | | * @returnsï¼å¤§äºï¼åè¿åtrueãå¦åè¿åfalse |
| | | */ |
| | |
| | | return Number(a.replace('%', '')) >= Number(b.replace('%', '')); |
| | | } |
| | | |
| | | /** |
| | | /** |
| | | *导åºä¸ºexcel |
| | | * @paramï¼ è¡¨æ ¼æ°æ®ï¼å¾
导åºçè¡¨æ ¼åï¼excelåï¼excelæä»¶å |
| | | * @returns |
| | |
| | | // å建xlsx对象 |
| | | const xls = XLSX.utils.json_to_sheet(itemsFormatted); |
| | | |
| | | // xls['A1'].v = '设å¤ç¼å·'; |
| | | // xls['B1'].v = 'å¼å¸¸ç±»å'; |
| | | // xls['C1'].v = 'å°åº'; |
| | | // xls['D1'].v = 'å¼å§æ¶é´'; |
| | | // xls['E1'].v = 'ç»ææ¶é´'; |
| | | |
| | | // ç¼è¾è¡¨å¤´è¡ ä¿®æ¹è¡¨å¤´ |
| | | excelColumnsName.forEach(item =>{ |
| | | xls[item[0]].v = item[1] |
| | |
| | | |
| | | } |
| | | |
| | | return {isExceedOneMonth,cmpp,exportToExcel} |
| | | /** |
| | | * descriptionï¼è¿åæ¶é´æ°ç»ï¼é´é15åéã |
| | | * @paramï¼ å¼å¸¸çå¼å§,å¼å¸¸ç»ææ¶é´ |
| | | * @createTime:2023-08-17 |
| | | * @returnsï¼æ¯å¦12:00:00-13:00:00 æä»¥è¿åçæ°ç»å
ç´ æ¯ 12:00:00 ,12:15:00,12:30:00,12:45:00ï¼13:00:00 |
| | | */ |
| | | function descFiftyTime(begin, end) { |
| | | let time = []; |
| | | if (begin == end) { |
| | | time.push(begin); |
| | | return time; |
| | | } |
| | | time.push(begin); |
| | | let temp = dayjs(begin).add(15, 'minute').format('YYYY-MM-DD HH:mm:ss'); |
| | | while (temp != end) { |
| | | time.push(temp); |
| | | temp = dayjs(temp).add(15, 'minute').format('YYYY-MM-DD HH:mm:ss'); |
| | | } |
| | | // å ä¸å¼å¸¸çç»ææ¶é´ |
| | | time.push(temp); |
| | | return time; |
| | | } |
| | | |
| | | return {isExceedOneMonth,cmpp,exportToExcel,descFiftyTime} |
| | | } |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import dayjs from 'dayjs' |
| | | export default { |
| | | /** |
| | | * descriptionï¼è¿åæ¶é´æ°ç»ï¼é´é15åéã |
| | | * @paramï¼ å¼å¸¸çå¼å§,å¼å¸¸ç»ææ¶é´ |
| | | * @createTime:2023-08-17 |
| | | * @returnsï¼æ¯å¦12:00:00-13:00:00 æä»¥è¿åçæ°ç»å
ç´ æ¯ 12:00:00 ,12:15:00,12:30:00,12:45:00ï¼13:00:00 |
| | | */ |
| | | descFiftyTime(begin, end) { |
| | | let time = []; |
| | | if (begin == end) { |
| | | time.push(begin); |
| | | return time; |
| | | } |
| | | time.push(begin); |
| | | let temp = dayjs(begin).add(15, 'minute').format('YYYY-MM-DD HH:mm:ss'); |
| | | while (temp != end) { |
| | | time.push(temp); |
| | | temp = dayjs(temp).add(15, 'minute').format('YYYY-MM-DD HH:mm:ss'); |
| | | } |
| | | // å ä¸å¼å¸¸çç»ææ¶é´ |
| | | time.push(temp); |
| | | return time; |
| | | }, |
| | | |
| | | /** |
| | | * descriptionï¼è¿åå¼å§æ¶é´çå45åéçæ¶é´ç¹ï¼ç»ææ¶é´å45åéçæ¶é´ç¹ |
| | | * @paramï¼ å¼å¸¸çå¼å§æ¶é´ï¼å¼å¸¸çç»ææ¶é´ã |
| | | * @returnsï¼æ°ç»ãtime[0],time[1],time[2],time[3]åå«ä»£è¡¨å¼å¸¸åºé´å45åéçæ¶é´ç¹ï¼å15åéçæ¶é´ç¹,å15åéçæ¶é´ç¹ï¼å45åéçæ¶é´ç¹ |
| | | */ |
| | | before45AndAfter45(begin, end) { |
| | | let time = []; |
| | | // å䏿®µçå¼å§æ¶é´ |
| | | const before45MinBegin = dayjs(begin) |
| | | .subtract(45, 'minute') |
| | | .format('YYYY-MM-DD HH:mm:ss'); |
| | | // å䏿®µçç»ææ¶é´ |
| | | const before15MinBegin = dayjs(begin) |
| | | .subtract(15, 'minute') |
| | | .format('YYYY-MM-DD HH:mm:ss'); |
| | | |
| | | // å䏿®µçå¼å§æ¶é´ |
| | | const after15MinBegin = dayjs(end) |
| | | .add(15, 'minute') |
| | | .format('YYYY-MM-DD HH:mm:ss'); |
| | | // å¾å40åé |
| | | const after45MinEnd = dayjs(end) |
| | | .add(45, 'minute') |
| | | .format('YYYY-MM-DD HH:mm:ss'); |
| | | time.push(before45MinBegin); |
| | | time.push(before15MinBegin); |
| | | time.push(after15MinBegin); |
| | | time.push(after45MinEnd); |
| | | return time; |
| | | }, |
| | | |
| | | /** |
| | | * descriptionï¼è¿åæç«ç¹å¨è¯¥æ¶æ®µå岿°æ®çget请æ±åæ° |
| | | * @paramï¼ ç«ç¹åç§°ï¼ å¼å§æ¶é´ï¼ ç»ææ¶é´ |
| | | * @returnsï¼å¯¹è±¡ |
| | | */ |
| | | requestGetParms(name, begin, end) { |
| | | return { |
| | | siteName: name, |
| | | beginTime: begin, |
| | | endTime: end |
| | | }; |
| | | }, |
| | | /** |
| | | * descriptionï¼ç¸å·®å¤å°ä¸ª15åé 计ç®ä¸å
æ¬å¼å§æ¶é´ï¼ç»ææ¶é´ã |
| | | * @paramï¼ å¼å¸¸å¼å§æ¶é´ï¼å¼å¸¸ç»ææ¶é´ |
| | | * @returnsï¼æ´æ° |
| | | */ |
| | | diffFiftyMinutesNum(beginNormal, endNormal) { |
| | | // å°å¼å§æ¶é´åç»ææ¶é´è½¬æ¢ä¸ºdayjs对象 |
| | | const start = dayjs(beginNormal).subtract(15, 'minute'); |
| | | const end = dayjs(endNormal); |
| | | |
| | | // 计ç®ç»ææ¶é´åå»å¼å§æ¶é´ä¸é´ç¸å·®å¤å°ä¸ªååé |
| | | const diffInMinutes = end.diff(start, 'minute'); |
| | | const diffInTenMinutes = Math.floor(diffInMinutes / 15); |
| | | return diffInTenMinutes; |
| | | }, |
| | | /** |
| | | * descriptionï¼å¤ædata䏿¯å¦æè¯¥æ¥ææ¶é´ï¼åå¨è¿å该æ¶é´å¯¹åºçæµåº¦å¼ï¼å¦åè¿å-1 |
| | | * @paramï¼ å ä¸åååºé´çå¼å¸¸æ°æ®ï¼æ¶é´å符串 |
| | | * @returnsï¼ |
| | | */ |
| | | findTimeInExceptionData(data, time) { |
| | | for (let i = 0; i < data.length; i++) { |
| | | if (data[i] == null) { |
| | | continue; |
| | | } |
| | | if (data[i]['lst'] == time) { |
| | | return data[i]['dustValue']; |
| | | } |
| | | } |
| | | return -1; |
| | | }, |
| | | /** |
| | | * descriptionï¼æ ¹æ®å¼å§åç»ææ¶é´,è¿å以15åé为é´éçæ¶é´å对åºçå¼ |
| | | * @paramï¼ ååºé´çå¼å§æ¶é´ï¼ ååºé´çç»ææ¶é´, å ä¸åååºé´çæ»æ¶é´æ®µçå¼å¸¸æ°æ®ç对象æ°ç» |
| | | * @returnsï¼å¯¹è±¡ãå
å«äºæçº¿å¾çxè½´ï¼yè½´çé
ç½®æ°æ® |
| | | */ |
| | | keepContinuousByEachFiftyMinutes( |
| | | intervalStarTime, |
| | | intervalEndTime, |
| | | headAndTailExceptionData |
| | | ) { |
| | | let xAxis = []; |
| | | let yAxis = []; |
| | | let obj = {}; |
| | | let current = intervalStarTime; |
| | | let tail = dayjs(intervalEndTime) |
| | | .add(15, 'minute') |
| | | .format('YYYY-MM-DD HH:mm:ss'); |
| | | while (current != tail) { |
| | | let value = this.findTimeInExceptionData( |
| | | headAndTailExceptionData, |
| | | current |
| | | ); |
| | | if (value != -1) { |
| | | xAxis.push(current); |
| | | yAxis.push(value); |
| | | } else { |
| | | xAxis.push(current); |
| | | yAxis.push(null); |
| | | } |
| | | current = dayjs(current) |
| | | .add(15, 'minute') |
| | | .format('YYYY-MM-DD HH:mm:ss'); |
| | | } |
| | | obj['xAxis'] = xAxis; |
| | | obj['yAxis'] = yAxis; |
| | | return obj; |
| | | }, |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import dayjs from 'dayjs'; |
| | | export default { |
| | | /** |
| | | * è®¡ç®æ¥æç¸å·®å 天 |
| | | * @paramï¼ |
| | | * @createTime:å¼å§æ¶é´ï¼ç»ææ¶é´ |
| | | * @returnsï¼ |
| | | */ |
| | | getDaysDifference(startDate, endDate) { |
| | | return dayjs(endDate).diff(startDate, 'day') + 1; |
| | | }, |
| | | /** |
| | | * ä»åææ°æ®æ°ç»ä¸è®¡ç®æå°åå¤§å¼ ,å¹³åå¼ï¼ å¨çº¿çï¼ææçï¼è¶
æ çï¼åä¸ä¸ªå¼ä¸º0~100åå¼ï¼ |
| | | * @paramï¼åæè¡¨ä¸çæ°æ® |
| | | * @returnsï¼ |
| | | */ |
| | | calBillData(arr, beginTime, endTime) { |
| | | let min = 65536; |
| | | let max = -1; |
| | | let avg = 0; |
| | | let online = 0; |
| | | let valid = 0; |
| | | let exceeding = 0; |
| | | |
| | | let sumAvg = 0; |
| | | let sumOnline = 0; |
| | | let sumValid = 0; |
| | | let sumExceeding = 0; |
| | | |
| | | // 计ç®éæ©çæ¶é´çç¸å·®çå¤©æ° |
| | | let begin = dayjs(beginTime).format('YYYY-MM-DD'); |
| | | let end = dayjs(endTime).format('YYYY-MM-DD'); |
| | | let dayDiff = this.getDaysDifference(begin, end); |
| | | console.log('æ¥æé´é', dayDiff); |
| | | let obj = {}; |
| | | // è®¡ç®æå°åå¤§å¼ |
| | | arr.forEach((item) => { |
| | | if (item.min < min) { |
| | | min = item.min; |
| | | } |
| | | if (item.max > max) { |
| | | max = item.max; |
| | | } |
| | | // 计ç®å¹³åå¼ï¼å¨çº¿çï¼ææçï¼è¶
æ ç |
| | | sumAvg = sumAvg + item.dayAvg; |
| | | sumOnline = sumOnline + Number(item.dayOnline.slice(0, -1)); |
| | | sumValid = sumValid + Number(item.dayValid.slice(0, -1)); |
| | | sumExceeding = sumExceeding + Number(item.dayExceeding.slice(0, -1)); |
| | | }); |
| | | // 计ç®åå¼ |
| | | avg = sumAvg / dayDiff; |
| | | // console.log('sumavg:',sumAvg,dayDiff); |
| | | online = sumOnline / dayDiff; |
| | | valid = sumValid / dayDiff; |
| | | exceeding = sumExceeding / dayDiff; |
| | | obj['min'] = min.toFixed(3); |
| | | obj['max'] = max.toFixed(3); |
| | | |
| | | obj['avg'] = avg.toFixed(2); |
| | | obj['online'] = online.toFixed(2); |
| | | obj['valid'] = valid.toFixed(2); |
| | | obj['exceeding'] = exceeding.toFixed(2); |
| | | |
| | | return obj; |
| | | }, |
| | | |
| | | /** |
| | | * 计ç®å¼å¸¸ç±»åèé度 å¼å¸¸å¤ç°ç |
| | | * @paramï¼ å¼å¸¸æ°æ®æ°ç» |
| | | * @returnsï¼ |
| | | */ |
| | | calRecur(exceptionArr) { |
| | | // å
¸åå¼å¸¸å¤ç°ç |
| | | let exceptionTyprRecurRate = 0; |
| | | // é级çªå |
| | | let mutationCount = 0; |
| | | // è¶
æ ä¸´è¿ |
| | | let exceedingNearCount = 0; |
| | | // è¶
æ æ¬¡æ°ä¸´ç |
| | | let exceedindCriticalDegree = 0; |
| | | |
| | | // ä¿ååºç°çä¸åå¼å¸¸ç±»å |
| | | let exception = []; |
| | | // å¼å¸¸ç±»åèé度 |
| | | let exceptionTypeAggregation = 0; |
| | | |
| | | exceptionArr.forEach((item) => { |
| | | // å¼å¸¸å¤ç°ç |
| | | if (item.exceptionType == 4) { |
| | | mutationCount++; |
| | | } else if (item.exceptionType == 5) { |
| | | exceedingNearCount++; |
| | | } else if (item.exceptionType == 6) { |
| | | exceedindCriticalDegree++; |
| | | } |
| | | |
| | | // å¼å¸¸ç±»åèé度 |
| | | if (exception.length == 0) { |
| | | exception.push(item.exceptionType); |
| | | } |
| | | // ä¿åæ°çå¼å¸¸ç±»å |
| | | else if (exception.indexOf(item.exceptionType) == -1) { |
| | | exception.push(item.exceptionType); |
| | | } |
| | | }); |
| | | |
| | | let sum = 0; |
| | | // 次æ°å1ï¼è¯¥å¼å¸¸åºç°2次ï¼ç®å¤ç°1次ãåºç°3次ï¼ç®å¤ç°2次... |
| | | if (mutationCount > 1) { |
| | | sum = sum + mutationCount - 1; |
| | | } |
| | | if (exceedingNearCount > 1) { |
| | | sum = sum + exceedindCriticalDegree - 1; |
| | | } |
| | | if (exceedindCriticalDegree > 1) { |
| | | sum = sum + exceedindCriticalDegree - 1; |
| | | } |
| | | // console.log('sum:', sum); |
| | | // console.log('exception:', exception); |
| | | // console.log( |
| | | // 'å
¶ä»', |
| | | // mutationCount, |
| | | // exceedindCriticalDegree, |
| | | // exceedindCriticalDegree |
| | | // ); |
| | | switch (sum) { |
| | | case 0: |
| | | exceptionTyprRecurRate = sum / 3; |
| | | break; |
| | | case 1: |
| | | exceptionTyprRecurRate = sum / 3; |
| | | break; |
| | | case 2: |
| | | case sum >= 3: |
| | | exceptionTyprRecurRate = 1; |
| | | break; |
| | | default: |
| | | return 'error'; |
| | | } |
| | | |
| | | exceptionTypeAggregation = exception.length / 8; |
| | | |
| | | let obj = {}; |
| | | obj['exceptionRecurrence'] = exceptionTyprRecurRate; |
| | | obj['exceptionTypeAggregation'] = exceptionTypeAggregation; |
| | | |
| | | return obj; |
| | | } |
| | | }; |
¶Ô±ÈÐÂÎļþ |
| | |
| | | export default { |
| | | add(a,b){ |
| | | return a+b |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <script> |
| | | import {useCounterStore} from '@/stores/counter'; |
| | | export default { |
| | | data(){ |
| | | return{ |
| | | |
| | | } |
| | | }, |
| | | setup(){ |
| | | const store = useCounterStore() |
| | | return{ |
| | | store |
| | | } |
| | | }, |
| | | mounted() { |
| | | |
| | | }, |
| | | methods: { |
| | | |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <template> |
| | | <div> |
| | | ä¸å¡æ¥è¡¨ {{ store.count }} |
| | | </div> |
| | | </template> |
| | | |
| | | <style scoped> |
| | | |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <script> |
| | | import TimeSelectWithShortCuts from '@/sfc/TimeSelectWithShortCuts.vue'; |
| | | import ScenarioType from '@/sfc/ScenarioType.vue'; |
| | | import InputSearch from '@/sfc/InputSearch.vue'; |
| | | |
| | | import AreaAndmonitorType from '@/sfc/AreaAndmonitorType.vue' |
| | | |
| | | import { useCommonFunction } from '../../utils/common.js'; |
| | | import requetsApi from '@/api/exportExcel/requetsApi.js' |
| | | import ButtonClick from '@/sfc/ButtonClick.vue' |
| | | import ButtonExportExcel from '@/sfc/ButtonExportExcel.vue' |
| | | import dayjs from 'dayjs'; |
| | | |
| | | export default { |
| | | components: { |
| | | TimeSelectWithShortCuts, |
| | | ScenarioType, |
| | | InputSearch, |
| | | ButtonClick, |
| | | ButtonExportExcel, |
| | | AreaAndmonitorType |
| | | }, |
| | | data() { |
| | | return { |
| | | form: { |
| | | // ç«ç¹åç§° |
| | | name: '', |
| | | // 设å¤ç¼å· |
| | | number: '', |
| | | // å¼å§æ¶é´ |
| | | beginTime: '', |
| | | // ç»ææ¶é´ |
| | | endTime: '' |
| | | }, |
| | | // è¿åçæ°æ® |
| | | tableData: [], |
| | | // è¡¨æ ¼æ°æ® |
| | | displayData: [], |
| | | // å½å页 |
| | | currentPage: 1, |
| | | // æ¯é¡µæ¡æ° |
| | | pageSize: 20, |
| | | total: 0, |
| | | // å è½½ä¸ |
| | | loading: false, |
| | | queryButton: false, |
| | | exportButton:false, |
| | | // ç©ºç¶æ |
| | | isNoData: false, |
| | | // å·²éä¸çåºæ¯ç±»å |
| | | scenarioType: [], |
| | | // è¡¨æ ¼é«åº¦ |
| | | tableHeight: '500' |
| | | }; |
| | | }, |
| | | setup() { |
| | | const { isExceedOneMonth, exportToExcel } = useCommonFunction() |
| | | return { isExceedOneMonth, exportToExcel } |
| | | }, |
| | | mounted() { |
| | | this.backMinuteDataAWeekAgo(); |
| | | this.calTableHeight(); |
| | | }, |
| | | |
| | | methods: { |
| | | exportDom() { |
| | | |
| | | let params = { |
| | | 'beginTime': this.form.beginTime, |
| | | 'endTime': this.form.endTime, |
| | | } |
| | | if (this.form.name) { |
| | | params['siteName'] = this.form.name; |
| | | } |
| | | if (this.form.number) { |
| | | params['mnCode'] = this.form.numbe; |
| | | } |
| | | if (this.scenarioType.length != 0) { |
| | | params['scenarioType'] = this.scenarioType; |
| | | } |
| | | this.exportButton = true |
| | | requetsApi.fetchAlSiteData(params).then(res => { |
| | | const data = res.data.data |
| | | if (data.length != 0) { |
| | | const tableColumns = [ |
| | | 'name', |
| | | 'address', |
| | | 'dutyCompany', |
| | | 'mnCode', |
| | | 'typeName', |
| | | 'dustValue', |
| | | 'noiseValue', |
| | | 'lst', |
| | | 'quality', |
| | | 'groupName', |
| | | |
| | | ] |
| | | const excelColumns = [['A1', 'ç«ç¹åç§°'], |
| | | ['B1', 'å°å'], ['C1', 'ä¾åºå'], ['D1', '设å¤ç¼å·'], |
| | | ['E1', 'ç±»å'], ['F1', 'æ¬å°æµåº¦(mg/m³)'], ['G1', 'åªå£°(dB)'], |
| | | ['H1', 'ééæ¶é´'], ['I1', 'ç级'], ['J1', 'æå¨åºå¿']] |
| | | this.exportToExcel(data, tableColumns, excelColumns, 'å岿°æ®è¡¨.xlsx') |
| | | }else{ |
| | | ElMessage('æ æ°æ®éè¦å¯¼åº') |
| | | } |
| | | this.exportButton = false |
| | | }) |
| | | }, |
| | | // åè½ï¼è¡¨æ ¼é«åº¦æ ¹æ®å
容èªéåº |
| | | calTableHeight() { |
| | | const h1 = this.$refs.h1.$el.offsetHeight; |
| | | const h2 = this.$refs.h2.$el.offsetHeight; |
| | | // å
¶ä¸ä¸ä¸ª40æ¯çåçæ»å¤è¾¹è· |
| | | this.tableHeight = `calc(100vh - ${h1}px - ${h2}px - 40px - 40px - var(--el-main-padding) * 2`; |
| | | }, |
| | | giveTime(val) { |
| | | //å°ä¸å½æ åæ¶é´è½¬ä¸ºæå®æ ¼å¼(该ç»ä»¶è¿åçæ åæ¶é´çæ ¼å¼ï¼æä»¥å¿
é¡»çå è¿ä¸ªå½æ°) |
| | | this.form.beginTime = dayjs(val[0]).format('YYYY-MM-DD HH:mm:ss'); |
| | | this.form.endTime = dayjs(val[1]).format('YYYY-MM-DD HH:mm:ss'); |
| | | }, |
| | | // 页大尿¹åæ¶è§¦å |
| | | handleSizeChange(val) { |
| | | this.pageSize = val; |
| | | |
| | | // æ¹åæ¯é¡µæ¾ç¤ºæ°ç®æ¶è·³å°å½å页 |
| | | this.handleCurrentChange(1); |
| | | }, |
| | | |
| | | // 页巿¹åæ¶è§¦å |
| | | handleCurrentChange(val) { |
| | | console.log('å½å页为ï¼', val); |
| | | // å°å½å页å·ç»currentPage |
| | | this.currentPage = val; |
| | | |
| | | // 页é¢ååæ¶è°ç¨ æ¥è¯¢æ°æ®å½æ° |
| | | this.handleSubmit(); |
| | | }, |
| | | //åºå·éå¢ |
| | | indexMethod(index) { |
| | | return index + 1 + (this.currentPage - 1) * this.pageSize; |
| | | }, |
| | | |
| | | // æ¥è¯¢æ°æ® |
| | | handleSubmit() { |
| | | // if (this.isExceedOneMonth(this.form.beginTime, this.form.endTime)) { |
| | | // alert('æ¶é´è·¨åº¦ä¸è½è¶
è¿ä¸ä¸ªæ'); |
| | | // return; |
| | | // } |
| | | this.loading = true; |
| | | this.queryButton = true |
| | | let params = {}; |
| | | params['page'] = this.currentPage; |
| | | params['pageSize'] = this.pageSize; |
| | | if (this.form.name) { |
| | | params['siteName'] = this.form.name; |
| | | } |
| | | if (this.form.number) { |
| | | params['mnCode'] = this.form.number; |
| | | } |
| | | params['beginTime'] = this.form.beginTime; |
| | | params['endTime'] = this.form.endTime; |
| | | if (this.scenarioType.length != 0) { |
| | | params['scenarioType'] = this.scenarioType.join(); |
| | | } |
| | | |
| | | this.$http.get('/dust/history1', { params: params }).then((response) => { |
| | | // ä¿åè¿åç |
| | | this.tableData = response.data.data.rows; |
| | | this.displayData = this.tableData; |
| | | this.loading = false; |
| | | this.queryButton = false |
| | | if (response.data.data.total == 0) { |
| | | ElMessage('è¯¥æ¶æ®µæ æ°æ®'); |
| | | this.loading = false; |
| | | this.queryButton = false |
| | | this.isNoData = true; |
| | | return; |
| | | } |
| | | this.total = response.data.data.total; |
| | | // ç§»é¤ç©ºæ°æ®ç¶æ |
| | | this.isNoData = false; |
| | | }); |
| | | }, |
| | | backMinuteDataAWeekAgo() { |
| | | // æå¼é¡µé¢å è½½æè¿ä¸å¨çæ°æ® |
| | | this.loading = true; |
| | | // ç»è¾å
¥æ¡è®¾ç½®é»è®¤ç鿩项 |
| | | |
| | | let params = {}; |
| | | params['siteName'] = this.form.name; |
| | | params['beginTime'] = this.form.beginTime; |
| | | params['endTime'] = this.form.endTime; |
| | | |
| | | this.$http.get('/dust/history1', { params: params }).then((response) => { |
| | | // ä¿åè¿åç |
| | | this.tableData = response.data.data.rows; |
| | | this.displayData = this.tableData; |
| | | |
| | | if (response.data.data.total == 0) { |
| | | ElMessage('è¯¥æ¶æ®µæ æ°æ®'); |
| | | this.isNoData = true; |
| | | return; |
| | | } |
| | | this.total = response.data.data.total; |
| | | this.loading = false; |
| | | }); |
| | | } |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <template> |
| | | <el-row> |
| | | <el-col ref="h1" class="head-row"> |
| | | <el-card> |
| | | <el-form :inline="true"> |
| | | <div class="demo-form-inline"> |
| | | <el-row> |
| | | <el-col> |
| | | |
| | | <el-form-item> |
| | | <AreaAndmonitorType></AreaAndmonitorType> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <template #label> </template> |
| | | <InputSearch isNeedDefaultSite="1" @submit-value="(n) => (form.name = n)"> |
| | | </InputSearch> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <template #label> |
| | | <span class="font-label">设å¤ç¼å·:</span> |
| | | </template> |
| | | <el-input v-model="form.number" clearable placeholder="请è¾å
¥"></el-input> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <ScenarioType @submitScenarioType="(val) => (scenarioType = val)"> |
| | | </ScenarioType> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-form-item> |
| | | <TimeSelectWithShortCuts @submit-time="giveTime"></TimeSelectWithShortCuts> |
| | | </el-form-item> |
| | | </el-row> |
| | | </div> |
| | | <div class="button-and-export"> |
| | | <el-form-item> |
| | | <!-- <el-button |
| | | type="primary" |
| | | @click="handleSubmit" |
| | | style="margin-left: 10px" |
| | | ><el-icon style="margin-right: 6px;font-size: 1.2em;"><i-ep-Search/></el-icon>æ¥è¯¢</el-button |
| | | > |
| | | <el-button type="success" @click="exportDom" round><el-icon style="margin-right: 6px;margin-bottom:2px;font-size: 1.2em;"><i-ep-Download ></i-ep-Download></el-icon>å¯¼åºæ°æ®</el-button> --> |
| | | <ButtonClick style="margin-right: 12px;" content="æç´¢" type="primary" :loading="queryButton" @do-search="handleSubmit"></ButtonClick> |
| | | <ButtonExportExcel content="å¯¼åºæ°æ®" type="success" :loading="exportButton" @do-export="exportDom"></ButtonExportExcel> |
| | | </el-form-item> |
| | | </div> |
| | | </el-form> |
| | | </el-card> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | <el-row> |
| | | <el-col v-show="!isNoData"> |
| | | |
| | | <el-table border size="default" :highlight-current-row="true" :data="displayData" :height="tableHeight" |
| | | v-loading="loading"> |
| | | <!--ç»å®ä¸ä¸ªæ¹æ³ï¼å°è¿åå¼èµç»index,å³è¡¨æ ¼æ¯è¡æ°æ®ç䏿 --> |
| | | <el-table-column type="index" label="åºå·" align="center" fixed :index="indexMethod"></el-table-column> |
| | | <el-table-column prop="name" label="ç«ç¹åç§°" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="address" label="å°å" align="center" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="dutyCompany" label="ä¾åºå" align="center" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="mnCode" label="设å¤ç¼å·" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="typeName" label="ç±»å" align="center" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="dustValue" label="æ¬å°æµåº¦(mg/m³)" align="center" sortable |
| | | show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="noiseValue" label="åªå£°(dB)" align="center" sortable show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="lst" label="ééæ¶é´" sortable align="center" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="quality" label="ç级" align="center" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="groupName" label="æå¨åºå¿" align="center" show-overflow-tooltip> |
| | | </el-table-column> |
| | | </el-table> |
| | | <!--size-change æ¯pageSize æ¹åæ¶ä¼è§¦åçäºä»¶,handleSizeChangeæ¯äºä»¶å¤ç彿° |
| | | current-change æ¯currentPage æ¹åæ¶ä¼è§¦åçäºä»¶ --> |
| | | |
| | | <el-pagination ref="h2" background @size-change="handleSizeChange" @current-change="handleCurrentChange" |
| | | :page-sizes="[10, 20, 50, 100]" :page-size="pageSize" :total="total" |
| | | layout="total,sizes, prev, pager, next, jumper" :current-page="currentPage"></el-pagination> |
| | | |
| | | </el-col> |
| | | <el-empty v-show="isNoData" :image-size="200" /> |
| | | |
| | | </el-row> |
| | | </template> |
| | | |
| | | <style lang="scss" scoped> |
| | | // æ´ä½å·¦å¤è¾¹è· |
| | | .el-row { |
| | | margin-left: 10px; |
| | | } |
| | | |
| | | .head-row { |
| | | margin: 10px 0px; |
| | | } |
| | | |
| | | .el-card { |
| | | border-radius: 9px; |
| | | } |
| | | |
| | | .font-label { |
| | | margin-top: 3px; |
| | | font-weight: bold; |
| | | } |
| | | |
| | | .demo-form-inline { |
| | | display: flex; |
| | | } |
| | | |
| | | .button-and-export { |
| | | display: flex; |
| | | justify-content: flex-end; |
| | | /* ä»è¡å°¾ä½ç½®å¼å§æå */ |
| | | } |
| | | |
| | | .el-pagination { |
| | | margin: 10px 0px; |
| | | } |
| | | </style> |
| | |
| | | <script> |
| | | import InputSearch from '../../sfc/InputSearch.vue'; |
| | | import ExceptionType from '../../sfc/ExceptionType.vue'; |
| | | import TimeSelectWithShortCuts from '../../sfc/TimeSelectWithShortCuts.vue'; |
| | | import DustExceptionText from '../../sfc/DustExceptionText.vue'; |
| | | import InputSearch from '@/sfc/InputSearch.vue'; |
| | | import ExceptionType from '@/sfc/ExceptionType.vue'; |
| | | import TimeSelectWithShortCuts from '@/sfc/TimeSelectWithShortCuts.vue'; |
| | | import DustExceptionText from './components/DustExceptionText.vue'; |
| | | import { useFetch } from '../../utils/fetch.js'; |
| | | import { useCommonFunction } from '../../utils/common.js'; |
| | | import AreaAndmonitorType from '../../sfc/AreaAndmonitorType.vue' |
| | | |
| | | import AreaAndmonitorType from '@/sfc/AreaAndmonitorType.vue' |
| | | import ButtonClick from '@/sfc/ButtonClick.vue' |
| | | import index from '@/utils/exception_common_function/index.js' |
| | | // å¼å¸¸å¾å½¢å¼æ¥ç»ä»¶ |
| | | const DustLineChart = defineAsyncComponent(() => |
| | | import('../../sfc/DustLineChart.vue') |
| | | import('./components/DustLineChart.vue') |
| | | ); |
| | | |
| | | import exceptionApi from '@/api/exceptionApi.js'; |
| | | import dayjs from 'dayjs'; |
| | | export default { |
| | | components: { |
| | | ExceptionType, |
| | | InputSearch, |
| | | // InputSearch, |
| | | TimeSelectWithShortCuts, |
| | | DustExceptionText, |
| | | DustLineChart, |
| | | ButtonClick, |
| | | AreaAndmonitorType |
| | | }, |
| | | data() { |
| | |
| | | displayData: [], |
| | | // è¡¨æ ¼é«åº¦ |
| | | tableHeight: 400, |
| | | // è¡¨æ ¼æ°æ® |
| | | // è¡¨æ ¼æ¾ç¤º |
| | | isTableShow:false, |
| | | // å½å页 |
| | | currentPage: 1, |
| | | // æ¯é¡µæ¡æ° |
| | | pageSize: 20, |
| | | // è¡¨æ ¼çæ»è®°å½æ° |
| | | total: 0, |
| | | |
| | | // è¡¨æ ¼æ¥è¯¢æ æ°æ®æ¶ |
| | | isNoData: false, |
| | | // isNoData: false, |
| | | // å¯¹è¯æ¡æ¾ç¤º |
| | | dialogTableVisible: false, |
| | | // ä¿åå¼å¸¸å¯¹åºçåºéºåç§°å设å¤ç¼å· |
| | |
| | | // ç«ç¹æ»æ°é |
| | | siteTotal: 0, |
| | | |
| | | // å¼å¸¸çç«ç¹æ»æ°é |
| | | // exceptionSiteNum:0, |
| | | |
| | | // éä¸è¡¨æ ¼å½åè¡çæ°æ® |
| | | tableCurrentRowData: null, |
| | |
| | | banTouch:0, |
| | | // 0代表å页ï¼1代表ä¸å页 |
| | | originClick:0 |
| | | } |
| | | |
| | | }, |
| | | // æ¡ä»¶æ¥è¯¢å¯¹è¯æ¡ |
| | | conditionDialogVisible:false |
| | | }; |
| | | }, |
| | | setup() { |
| | |
| | | }, |
| | | |
| | | // å½éæ©çæ¶é´åçååæ¶ï¼å¼å¸¸åæé¨åçå¼å¸¸åºéºæ°é忥åå |
| | | |
| | | beginTime() { |
| | | this.getShopNames(); |
| | | }, |
| | |
| | | } |
| | | }, |
| | | mounted() { |
| | | // æµè¯ç»åå¼å½æ° |
| | | // let param = { |
| | | // siteName: 'éå±±åºéå±±æ°åJSC1-0401åå
1-11-01å°å项ç®09', |
| | | // beginTime: '2023-07-01 00:00:00', |
| | | // endTime: '2023-07-10 00:00:00' |
| | | // }; |
| | | // this.backData = this.request('/dust/history1', param); |
| | | // console.log('å岿°æ®ä¸ºï¼', this.backData.value); |
| | | |
| | | this.backExceptionDataAWeekAgo(); |
| | | // this.calTableHeight(); |
| | | // æ¥è¯¢æ¶é´æ®µçåå¼å¸¸çç«ç¹ï¼æ¥è¯¢è¯¥æ¶é´åºé´çåå¼å¸¸æ°é |
| | | this.getShopNames(); |
| | | // this.exception.exception0 = this.getSiteNameByExceptionType('0',this.beginTime,this.endTime) |
| | | // console.log('å¼å¸¸æ°æ®ä¸ºï¼',this.exception.exception0); |
| | | this.getSiteNume() |
| | | }, |
| | | |
| | | methods: { |
| | | // æ¾åç«ç¹æ»æ°é |
| | | getSiteNume(){ |
| | | exceptionApi.getSitesNum().then(res => { |
| | | this.siteTotal = res.data.data.length |
| | | }) |
| | | |
| | | }, |
| | | |
| | | |
| | | // getExceptionSiteNum(){ |
| | | // this.$http.get('/dust/exceptionsitenum').then(result => { |
| | | // this.exceptionSiteNum = result.data.data.length |
| | | // }) |
| | | // }, |
| | | /** |
| | | * descriptionï¼ç¹å»å¼å¸¸ç«ç¹ååæ¶ è¿åçæ°æ® |
| | | * @paramï¼ |
| | |
| | | this.selectedRowIndex = this.displayData.indexOf(this.tableCurrentRowData); |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * descriptionï¼è¿åæ¶é´æ°ç»ï¼ä»å¼å§æ¶é´çå15åéå°ç»ææ¶é´ä¸ºæ¢ã |
| | | * @paramï¼ å¼å¸¸çå¼å§,å¼å¸¸ç»ææ¶é´ |
| | | * @createTime:2023-08-17 |
| | | * @returnsï¼æ¯å¦12:00:00-13:00:00 æä»¥è¿åçæ°ç»å
ç´ æ¯ 12:00:00 ,12:15:00,12:30:00,12:45:00ï¼13:00:00 |
| | | */ |
| | | descTenTime(begin, end) { |
| | | let time = []; |
| | | if (begin == end) { |
| | | time.push(begin); |
| | | return time; |
| | | } |
| | | time.push(begin); |
| | | let temp = dayjs(begin).add(15, 'minute').format('YYYY-MM-DD HH:mm:ss'); |
| | | while (temp != end) { |
| | | time.push(temp); |
| | | temp = dayjs(temp).add(15, 'minute').format('YYYY-MM-DD HH:mm:ss'); |
| | | } |
| | | // å ä¸å¼å¸¸çç»ææ¶é´ |
| | | time.push(temp); |
| | | return time; |
| | | }, |
| | | /** |
| | | * descriptionï¼æçµææç½æ¶è®¾ç½®çè¡¨æ ¼æ°æ® |
| | | */ |
| | | setOfflineTbleData(){ |
| | | // æ æ°æ®æ¶çæ¶é´æ°ç» æ¶é´ç¸å·®15åé |
| | | const abnormalTimeTenMinute = this.descTenTime( |
| | | const abnormalTimeTenMinute = index.descFiftyTime( |
| | | this.tableCurrentRowData.beginTime, |
| | | this.tableCurrentRowData.endTime |
| | | ); |
| | |
| | | this.exceptionTotal = abnormalTimeTenMinute.length; |
| | | }, |
| | | |
| | | /** |
| | | * descriptionï¼è¿åå¼å§æ¶é´çå45åéçæ¶é´ç¹ï¼ç»ææ¶é´å45åéçæ¶é´ç¹ |
| | | * @paramï¼ å¼å¸¸çå¼å§æ¶é´ï¼å¼å¸¸çç»ææ¶é´ã |
| | | * @returnsï¼æ°ç»ãtime[0],time[1],time[2],time[3]åå«ä»£è¡¨å¼å¸¸åºé´å45åéçæ¶é´ç¹ï¼å15åéçæ¶é´ç¹,å15åéçæ¶é´ç¹ï¼å45åéçæ¶é´ç¹ |
| | | */ |
| | | before45AndAfter45(begin, end) { |
| | | let time = []; |
| | | // å䏿®µçå¼å§æ¶é´ |
| | | const before45MinBegin = dayjs(begin) |
| | | .subtract(45, 'minute') |
| | | .format('YYYY-MM-DD HH:mm:ss'); |
| | | // å䏿®µçç»ææ¶é´ |
| | | const before15MinBegin = dayjs(begin) |
| | | .subtract(15, 'minute') |
| | | .format('YYYY-MM-DD HH:mm:ss'); |
| | | |
| | | |
| | | // å䏿®µçå¼å§æ¶é´ |
| | | const after15MinBegin = dayjs(end) |
| | | .add(15, 'minute') |
| | | .format('YYYY-MM-DD HH:mm:ss'); |
| | | // å¾å40åé |
| | | const after45MinEnd = dayjs(end) |
| | | .add(45, 'minute') |
| | | .format('YYYY-MM-DD HH:mm:ss'); |
| | | time.push(before45MinBegin); |
| | | time.push(before15MinBegin); |
| | | time.push(after15MinBegin); |
| | | time.push(after45MinEnd); |
| | | return time; |
| | | }, |
| | | /** |
| | | * descriptionï¼è¿åæç«ç¹å¨è¯¥æ¶æ®µå岿°æ®çget请æ±åæ° |
| | | * @paramï¼ ç«ç¹åç§°ï¼ å¼å§æ¶é´ï¼ ç»ææ¶é´ |
| | | * @returnsï¼å¯¹è±¡ |
| | | */ |
| | | requestGetParms(name, begin, end) { |
| | | return { |
| | | siteName: name, |
| | | beginTime: begin, |
| | | endTime: end |
| | | }; |
| | | }, |
| | | /** |
| | | * descriptionï¼ç¸å·®å¤å°ä¸ª15åé 计ç®ä¸å
æ¬å¼å§æ¶é´ï¼ç»ææ¶é´ã |
| | | * @paramï¼ å¼å¸¸å¼å§æ¶é´ï¼å¼å¸¸ç»ææ¶é´ |
| | | * @returnsï¼æ´æ° |
| | | */ |
| | | diffFiftyMinutesNum(beginNormal, endNormal) { |
| | | // å°å¼å§æ¶é´åç»ææ¶é´è½¬æ¢ä¸ºdayjs对象 |
| | | const start = dayjs(beginNormal).subtract(15, 'minute'); |
| | | const end = dayjs(endNormal); |
| | | |
| | | // 计ç®ç»ææ¶é´åå»å¼å§æ¶é´ä¸é´ç¸å·®å¤å°ä¸ªååé |
| | | const diffInMinutes = end.diff(start, 'minute'); |
| | | const diffInTenMinutes = Math.floor(diffInMinutes / 15); |
| | | return diffInTenMinutes; |
| | | }, |
| | | // æ®µçµææç½åºé´æ æ°æ®ï¼éè¦è¡¥å
ãå
¶ä»çé½ææ°æ®ï¼ç´æ¥ä¸æ¬¡è¯·æ±å
¨é¨æ¶æ®µå°±å¥½ |
| | | |
| | | // æ ¹æ®å¼å¸¸åºé´æé åå端é¦å°¾ ååºé´ ä¸é´åºé´ ååºé´ |
| | |
| | | let timeAndValue = {}; |
| | | |
| | | // 仿·»å äºé¦ä½åºé´çå¼å§åç»ææ¶é´è¿è¡éå ä¿è¯æ¶é´ä»¥10åé为é´é |
| | | timeAndValue = this.keepContinuousByEachFiftyMinutes( |
| | | timeAndValue = index.keepContinuousByEachFiftyMinutes( |
| | | allTime[0], |
| | | allTime[3], |
| | | this.dialog.allExceptionTimeData |
| | |
| | | }); |
| | | |
| | | }, |
| | | /** |
| | | * descriptionï¼å¤ædata䏿¯å¦æè¯¥æ¥ææ¶é´ï¼åå¨è¿å该æ¶é´å¯¹åºçæµåº¦å¼ï¼å¦åè¿å-1 |
| | | * @paramï¼ å ä¸åååºé´çå¼å¸¸æ°æ®ï¼æ¶é´å符串 |
| | | * @returnsï¼ |
| | | */ |
| | | findTimeInExceptionData(data, time) { |
| | | for (let i = 0; i < data.length; i++) { |
| | | if (data[i] == null) { |
| | | continue; |
| | | } |
| | | if (data[i]['lst'] == time) { |
| | | return data[i]['dustValue']; |
| | | } |
| | | } |
| | | return -1; |
| | | }, |
| | | /** |
| | | * descriptionï¼æ ¹æ®å¼å§åç»ææ¶é´,è¿å以15åé为é´éçæ¶é´å对åºçå¼ |
| | | * @paramï¼ ååºé´çå¼å§æ¶é´ï¼ ååºé´çç»ææ¶é´, å ä¸åååºé´çæ»æ¶é´æ®µçå¼å¸¸æ°æ®ç对象æ°ç» |
| | | * @returnsï¼å¯¹è±¡ãå
å«äºæçº¿å¾çxè½´ï¼yè½´çé
ç½®æ°æ® |
| | | */ |
| | | keepContinuousByEachFiftyMinutes( |
| | | intervalStarTime, |
| | | intervalEndTime, |
| | | headAndTailExceptionData |
| | | ) { |
| | | let xAxis = []; |
| | | let yAxis = []; |
| | | let obj = {}; |
| | | let current = intervalStarTime; |
| | | let tail = dayjs(intervalEndTime) |
| | | .add(15, 'minute') |
| | | .format('YYYY-MM-DD HH:mm:ss'); |
| | | while (current != tail) { |
| | | let value = this.findTimeInExceptionData( |
| | | headAndTailExceptionData, |
| | | current |
| | | ); |
| | | if (value != -1) { |
| | | xAxis.push(current); |
| | | yAxis.push(value); |
| | | } else { |
| | | xAxis.push(current); |
| | | yAxis.push(null); |
| | | } |
| | | current = dayjs(current) |
| | | .add(15, 'minute') |
| | | .format('YYYY-MM-DD HH:mm:ss'); |
| | | } |
| | | obj['xAxis'] = xAxis; |
| | | obj['yAxis'] = yAxis; |
| | | return obj; |
| | | }, |
| | | |
| | | |
| | | /** |
| | | * descriptionï¼ç»å¶æçº¿å¾ |
| | |
| | | // beforeAndAfterTime[1]:å15åéçæ¶é´ç¹ |
| | | // beforeAndAfterTime[2]:å15åéçæ¶é´ç¹ |
| | | // beforeAndAfterTime[3]:å45åéçæ¶é´ç¹ |
| | | let beforeAndAfterTime = this.before45AndAfter45( |
| | | let beforeAndAfterTime = index.before45AndAfter45( |
| | | exceptionBeginTime, |
| | | exceptionEndTime |
| | | ); |
| | | |
| | | // æé å¼å¸¸æ¶é´åååºé´æ°æ®è¯·æ±åæ°(é¤äºæç½ä¸é½ç¨å°ï¼ |
| | | let paramsAllTime = this.requestGetParms( |
| | | let paramsAllTime = index.requestGetParms( |
| | | this.tableCurrentRowData.name, |
| | | beforeAndAfterTime[0], |
| | | beforeAndAfterTime[3] |
| | |
| | | |
| | | // å¾å°ä¸ä¸è¡çæ°æ® |
| | | this.tableCurrentRowData = this.displayData[this.selectedRowIndex] |
| | | let params = this.requestGetParms(this.tableCurrentRowData.name,this.tableCurrentRowData.beginTime,this.tableCurrentRowData.endTime) |
| | | let params = index.requestGetParms(this.tableCurrentRowData.name,this.tableCurrentRowData.beginTime,this.tableCurrentRowData.endTime) |
| | | this.loading.preButton = true |
| | | this.$http |
| | | .get('/dust/history', { params: params }) |
| | |
| | | // å¾å°ä¸ä¸è¡çæ°æ® |
| | | this.tableCurrentRowData = this.displayData[this.selectedRowIndex] |
| | | |
| | | let params = this.requestGetParms(this.tableCurrentRowData.name,this.tableCurrentRowData.beginTime,this.tableCurrentRowData.endTime) |
| | | let params = index.requestGetParms(this.tableCurrentRowData.name,this.tableCurrentRowData.beginTime,this.tableCurrentRowData.endTime) |
| | | this.loading.afterButton = true |
| | | this.$http |
| | | .get('/dust/history', { params: params }) |
| | |
| | | this.displayData = response.data.data.rows; |
| | | this.loading.queryButton = false |
| | | this.loading.tableLoading = false; |
| | | |
| | | if (response.data.data.total == 0) { |
| | | ElMessage('è¯¥æ¶æ®µæ æ°æ®'); |
| | | this.isNoData = true; |
| | | this.isTableShow = false |
| | | return; |
| | | } |
| | | this.isTableShow = true |
| | | this.total = response.data.data.total; |
| | | // ç§»é¤ç©ºæ°æ®ç¶æ |
| | | this.isNoData = false; |
| | | }); |
| | | |
| | | this.conditionDialogVisible = false |
| | | }, |
| | | |
| | | /** |
| | |
| | | |
| | | if (response.data.data.total == 0) { |
| | | ElMessage('è¯¥æ¶æ®µæ æ°æ®'); |
| | | this.isNoData = true; |
| | | this.isTableShow = false |
| | | return; |
| | | } |
| | | this.isTableShow = true |
| | | this.total = response.data.data.total; |
| | | this.loading.tableLoading = false; |
| | | }); |
| | |
| | | </script> |
| | | |
| | | <template> |
| | | |
| | | <el-button type="primary" @click="conditionDialogVisible = true"> |
| | | æç´¢æ¡ä»¶ |
| | | </el-button> |
| | | |
| | | <el-dialog |
| | | v-model="conditionDialogVisible" |
| | | title="Tips" |
| | | width="30%" |
| | | class="condition-dialog" |
| | | > |
| | | <el-row ref="h1"> |
| | | <el-col> |
| | | <el-form :inline="true"> |
| | |
| | | <el-form-item > |
| | | <AreaAndmonitorType ></AreaAndmonitorType> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | |
| | | <!-- <el-form-item> |
| | | <InputSearch |
| | | :isNeedDefaultSite="0" |
| | | isNeedDefaultSite="0" |
| | | @submit-value="(n) => (form.name = n)" |
| | | @submit-site-Nums="(n) => (siteTotal = n)" |
| | | > |
| | | </InputSearch> |
| | | </el-form-item> |
| | | </el-form-item> --> |
| | | |
| | | <el-form-item> |
| | | <TimeSelectWithShortCuts timeType="day" @submit-time="giveTime" ></TimeSelectWithShortCuts> |
| | | </el-form-item> |
| | | |
| | | <el-form-item> |
| | | <ExceptionType |
| | | @submit-value="(n) => form.exceptionName = n" |
| | | ></ExceptionType> |
| | | </el-form-item> |
| | | |
| | | <el-form-item> |
| | | <TimeSelectWithShortCuts @submit-time="giveTime"></TimeSelectWithShortCuts> |
| | | </el-form-item> |
| | | |
| | | </div> |
| | | |
| | | <div class="head-container-search"> |
| | | <el-form-item> |
| | | <el-button type="warning" :loading="loading.queryButton" @click="handleSubmit">æ¥è¯¢</el-button> |
| | | <!-- <el-button type="warning" :loading="loading.queryButton" @click="handleSubmit">æ¥è¯¢</el-button> --> |
| | | <ButtonClick content="åæ" type="warning" :loading="loading.queryButton" @do-search="handleSubmit"></ButtonClick> |
| | | </el-form-item> |
| | | </div> |
| | | </el-form> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | |
| | | <!-- |
| | | <template #footer> |
| | | |
| | | <span class="dialog-footer"> |
| | | <el-button @click="dialogVisible = false">Cancel</el-button> |
| | | <el-button type="primary" @click="dialogVisible = false"> |
| | | Confirm |
| | | </el-button> |
| | | </span> |
| | | </template> --> |
| | | </el-dialog> |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | <el-row class="head-describtion-text" ref="h2"> |
| | | <el-row> |
| | |
| | | <!-- æ 头 --> |
| | | <div class="card-text1"> |
| | | <image class="card-header-image"></image> |
| | | <span class="card-header-text">æ»å¨å¹³åå¼å¼å¸¸</span> |
| | | <span class="card-header-text">ååè¶å¿å¼å¸¸</span> |
| | | </div> |
| | | |
| | | <div class="card-content-text"> |
| | |
| | | <!-- æ 头 --> |
| | | <div class="card-text1"> |
| | | <image class="card-header-image"></image> |
| | | <span class="card-header-text">æçµææç½</span> |
| | | <span class="card-header-text">æ°æ®ç¼ºå¤±å¼å¸¸</span> |
| | | </div> |
| | | |
| | | <div class="card-content-text"> |
| | |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | <el-row> |
| | | <el-col v-show="!isNoData"> |
| | | <el-row v-show="isTableShow"> |
| | | <el-col > |
| | | <el-table |
| | | ref="table" |
| | | :data="displayData" |
| | | :height="tableHeight" |
| | | highlight-current-row="true" |
| | | :highlight-current-row="true" |
| | | size="default" |
| | | v-loading="loading.tableLoading" |
| | | border |
| | |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | <el-empty v-show="isNoData" :image-size="200" /> |
| | | |
| | | <el-dialog v-model="dialogTableVisible" draggable align-center height="300px"> |
| | | <!-- 头 --> |
| | |
| | | </template> |
| | | |
| | | <style lang="scss" scoped> |
| | | |
| | | .el-row { |
| | | margin-left: 10px; |
| | | } |
| | | /* 䏿èåå¼å§ */ |
| | | .example-showcase .el-dropdown-link { |
| | | cursor: pointer; |
| | | color: var(--el-color-primary); |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | /* 䏿èåç»æ */ |
| | | |
| | | /* æ¡ä»¶æ¥è¯¢æ¨¡åçæ ·å¼ */ |
| | | .head-container-search { |
| | |
| | | |
| | | |
| | | /* æ¥ç详æ
å¯¹è¯æ¡æ¨¡åçæ ·å¼ */ |
| | | :deep(.el-dialog) { |
| | | // å¯¹è¯æ¡é«åº¦ |
| | | |
| | | } |
| | | .diag-head { |
| | | // å¯¹è¯æ¡å¤´é¨åºå |
| | | min-height: 200px; |
| | |
| | | border: 2px solid #7bc0fc; |
| | | } |
| | | .chart-jump-button { |
| | | // âä¸ä¸æ¡âï¼âä¸ä¸æ¡â æé® |
| | | // border: 1px solid #fdc2db; |
| | | // min-height: 30px; |
| | | // width: 200px; |
| | | // float: right; |
| | | display: flex; |
| | | justify-content: right; |
| | | } |
| | |
| | | <script> |
| | | import InputSearch from '../../sfc/InputSearch.vue'; |
| | | import ExceptionType from '../../sfc/ExceptionType.vue'; |
| | | import TimeSelectWithShortCuts from '../../sfc/TimeSelectWithShortCuts.vue'; |
| | | import { useFetch } from '../../utils/fetch.js'; |
| | | import InputSearch from '@/sfc/InputSearch.vue'; |
| | | import ExceptionType from '@/sfc/ExceptionType.vue'; |
| | | import TimeSelectWithShortCuts from '@/sfc/TimeSelectWithShortCuts.vue'; |
| | | import { useCommonFunction } from '../../utils/common.js'; |
| | | import AreaAndmonitorType from '../../sfc/AreaAndmonitorType.vue' |
| | | |
| | | import AreaAndmonitorType from '@/sfc/AreaAndmonitorType.vue'; |
| | | // å¼å¸¸å¾å½¢å¼æ¥ç»ä»¶ |
| | | const DustLineChart = defineAsyncComponent(() => |
| | | import('../../sfc/DustLineChart.vue') |
| | | import('./components/DustLineChart.vue') |
| | | ); |
| | | |
| | | import submitApi from '@/api/audit/submitApi.js'; |
| | | import dayjs from 'dayjs'; |
| | | import ButtonClick from '@/sfc/ButtonClick.vue'; |
| | | import index from '@/utils/exception_common_function/index.js'; |
| | | export default { |
| | | components: { |
| | | ExceptionType, |
| | | InputSearch, |
| | | TimeSelectWithShortCuts, |
| | | |
| | | DustLineChart, |
| | | AreaAndmonitorType |
| | | AreaAndmonitorType, |
| | | ButtonClick |
| | | }, |
| | | data() { |
| | | return { |
| | |
| | | // ç«ç¹åç§° |
| | | name: '', |
| | | // éæ©çå¼å¸¸ç±»å |
| | | exceptionName: [], |
| | | |
| | | exceptionName: [] |
| | | }, |
| | | beginTime: '', |
| | | endTime: '', |
| | |
| | | tableData: [], |
| | | // è¡¨æ ¼å±ç¤ºçæ°æ® |
| | | displayData: [], |
| | | // è¡¨æ ¼åå¤é |
| | | multipleSelection: [], |
| | | // è¡¨æ ¼é«åº¦ |
| | | tableHeight: 400, |
| | | // è¡¨æ ¼æ°æ® |
| | |
| | | // æ¯é¡µæ¡æ° |
| | | pageSize: 20, |
| | | total: 0, |
| | | |
| | | |
| | | // è¡¨æ ¼æ¥è¯¢æ æ°æ®æ¶ |
| | | isNoData: false, |
| | | // å¯¹è¯æ¡æ¾ç¤º |
| | | dialogTableVisible: false, |
| | | // ä¿åå¼å¸¸å¯¹åºçåºéºåç§°å设å¤ç¼å· |
| | | exception: { |
| | | // æçµææç½ |
| | | exception0: [], |
| | | // æ°æ®è¶
ä½ |
| | | exception1: [], |
| | | // è¶
æ |
| | | exception2: [], |
| | | // æ°æ®é¿æ¶æ®µæ æ³¢å¨ |
| | | exception3: [], |
| | | // é级çªåå¼å¸¸ |
| | | exception4: [], |
| | | // 临è¿è¶
æ å¼å¸¸ |
| | | exception5: [], |
| | | // 忥è¶
æ æ¬¡æ°ä¸´çå¼å¸¸ |
| | | exception6: [], |
| | | // æ»å¨å¹³åå¼å¼å¸¸ |
| | | exception7: [], |
| | | |
| | | |
| | | // è¯¥æ¶æ®µçå¼å¸¸æ°é |
| | | exception0Num: 0, |
| | | exception1Num: 0, |
| | | exception2Num: 0, |
| | | exception3Num: 0, |
| | | exception4Num: 0, |
| | | exception5Num: 0, |
| | | exception6Num: 0, |
| | | exception7Num: 0, |
| | | }, |
| | | // ç«ç¹æ»æ°é |
| | | siteTotal: 0, |
| | | |
| | | // å¼å¸¸çç«ç¹æ»æ°é |
| | | // exceptionSiteNum:0, |
| | | |
| | | // éä¸è¡¨æ ¼å½åè¡çæ°æ® |
| | | tableCurrentRowData: null, |
| | | // éä¸è¡¨æ ¼å½åè¡çç´¢å¼ |
| | | selectedRowIndex:-2, |
| | | selectedRowIndex: -2, |
| | | // 页é¢ä¸çæé®å è½½ç¶æ |
| | | loading: { |
| | | submitAudit: false, |
| | | // æ¥è¯¢æé® |
| | | queryButton:false, |
| | | // è¡¨æ ¼å è½½ä¸ |
| | | tableLoading: false, |
| | | queryButton: false, |
| | | // è¡¨æ ¼å è½½ä¸ |
| | | tableLoading: false, |
| | | // ä¸ä¸æ¡æé® |
| | | preButton: false, |
| | | // ä¸ä¸æ¡æé® |
| | | afterButton: false, |
| | | // æçº¿å¾ |
| | | lineChart: false, |
| | | |
| | | lineChart: false |
| | | }, |
| | | |
| | | dialog: { |
| | |
| | | }, |
| | | |
| | | // æ è®°ä½ |
| | | flag:{ |
| | | flag: { |
| | | // å è½½æ¶ ä¸ä¸æ¡æé®ä¸è½åç¹å» |
| | | banTouch:0, |
| | | banTouch: 0, |
| | | // 0代表å页ï¼1代表ä¸å页 |
| | | originClick:0 |
| | | } |
| | | |
| | | originClick: 0 |
| | | }, |
| | | auditDialog: { |
| | | visible: false, |
| | | // å®¡æ ¸äºº |
| | | checker: 'admin', |
| | | checkDate: '', |
| | | checkerNotes: '', |
| | | enterpriseNotes: '', |
| | | |
| | | }, |
| | | auditTableData: [], |
| | | // å®¡æ ¸ç¶æä¸ä¸º0 |
| | | auditData: [], |
| | | }; |
| | | }, |
| | | setup() { |
| | | // provide('search',readonly(form)) |
| | | const { backData, error, request } = useFetch(); |
| | | const { isExceedOneMonth } = useCommonFunction(); |
| | | return { |
| | | backData, |
| | | error, |
| | | request, |
| | | isExceedOneMonth |
| | | }; |
| | | }, |
| | |
| | | } |
| | | }, |
| | | |
| | | // å½éæ©çæ¶é´åçååæ¶ï¼å¼å¸¸åæé¨åçå¼å¸¸åºéºæ°é忥åå |
| | | |
| | | beginTime() { |
| | | this.getShopNames(); |
| | | }, |
| | | endTime() { |
| | | this.getShopNames(); |
| | | }, |
| | | dialogTableVisible() { |
| | | window.addEventListener('resize', this.updateChart); |
| | | } |
| | | }, |
| | | computed: { |
| | | |
| | | // å®¡è®¡æ»æ°ï¼å
æ¬é¨åå®¡æ ¸ï¼ |
| | | auditTotal(){ |
| | | return this.auditData.length |
| | | }, |
| | | // è§èå®¡è®¡æ»æ° |
| | | auditedRegular(){ |
| | | let count = 0 |
| | | this.auditData.forEach(item => { |
| | | if(item.auditStatus == 3){ |
| | | count ++ |
| | | } |
| | | }) |
| | | return count |
| | | }, |
| | | // é¨åå®¡æ ¸æ°é |
| | | auditPart(){ |
| | | let count = 0 |
| | | this.auditData.forEach(item => { |
| | | if(item.auditStatus == 1 || item.auditStatus == 2){ |
| | | count ++ |
| | | } |
| | | }) |
| | | return count |
| | | }, |
| | | // å¾
å®¡æ ¸æ° |
| | | unCheckedNUm() { |
| | | return this.total - this.auditedRegular; |
| | | }, |
| | | // å®¡æ ¸æ¯ä¾ |
| | | checkedRate() { |
| | | return ((this.auditedRegular / this.total) * 100).toFixed(1); |
| | | }, |
| | | }, |
| | | mounted() { |
| | | |
| | | |
| | | this.backExceptionDataAWeekAgo(); |
| | | this.calTableHeight(); |
| | | // æ¥è¯¢æ¶é´æ®µçåå¼å¸¸çç«ç¹ï¼æ¥è¯¢è¯¥æ¶é´åºé´çåå¼å¸¸æ°é |
| | | this.getShopNames(); |
| | | |
| | | }, |
| | | |
| | | methods: { |
| | | /** |
| | | * æ¥ç该段æ¶é´å
å·²å®¡æ ¸çæ°æ® |
| | | * @paramï¼ |
| | | * @returnsï¼ |
| | | */ |
| | | gethasCheckedNumByTime() { |
| | | submitApi.getAuditNumByTime(this.beginTime, this.endTime).then((res) => { |
| | | this.auditData = res.data.data; |
| | | }); |
| | | }, |
| | | /** |
| | | * å¤éåï¼å·²å®¡æ ¸çè¡ä¸ä¼å å
¥å
¶ä¸ï¼ |
| | | * @param |
| | | * @returns |
| | | */ |
| | | handleSelectionChange(val) { |
| | | console.log('éä¸çè¡ä¸ºï¼', val); |
| | | this.multipleSelection = val.filter((row) => row.auditStatus != 3); |
| | | }, |
| | | /** |
| | | * è§¦åæ¹éå®¡æ ¸ |
| | | * @paramï¼ |
| | | * @returnsï¼ |
| | | */ |
| | | quickReview() { |
| | | if (this.multipleSelection.length != 0) { |
| | | ElMessageBox.confirm('ç¡®å®è¦æ¹éå®¡æ ¸å?', { |
| | | confirmButtonText: '确认', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning', |
| | | center: true |
| | | }).then(() => { |
| | | this.noNoteCheck(this.multipleSelection); |
| | | setTimeout(() => { |
| | | this.gethasCheckedNumByTime(); |
| | | ElMessage.success('æ¹éå®¡æ ¸å®æ'); |
| | | }, 1500); |
| | | }); |
| | | } else { |
| | | ElMessage('æªéä¸è¡¨æ ¼çè¡'); |
| | | } |
| | | }, |
| | | /** |
| | | * æ¸
é¤å·²éä¸çè¡¨æ ¼è¡ï¼ |
| | | * @paramï¼ |
| | | * @returnsï¼ |
| | | */ |
| | | clearSelected() { |
| | | this.$refs.table.clearSelection(); |
| | | }, |
| | | toggleSelection() { |
| | | this.$refs.table.clearSelection(); |
| | | }, |
| | | /** |
| | | *æäº¤æ¹éå®¡æ ¸ãé»è®¤å®¡æ ¸äººï¼ç©ºå¤æ³¨ |
| | | * @paramï¼ éè¦å¿«éå®¡æ ¸çè¡ |
| | | * @returnsï¼ |
| | | */ |
| | | noNoteCheck(rows) { |
| | | rows.forEach((item) => { |
| | | submitApi.submitAudit('admin', 'æ ', 'æ ', item.id, 3); |
| | | item.auditStatus = 3; |
| | | }); |
| | | }, |
| | | close() { |
| | | // if (this.auditDialog.checkerNotes || this.auditDialog.enterpriseNotes) { |
| | | // ElMessageBox.confirm('è¿å°ä¼ï¼ç¡®å®è¦å
³éå', 'æç¤º', |
| | | // { |
| | | // confirmButtonText: 'ç¡®å®', |
| | | // cancelButtonText: 'åæ¶', |
| | | // type: 'warning', |
| | | // center :'true', |
| | | // icon: markRaw(Delete), |
| | | // draggable: true, |
| | | // }).then(() => { |
| | | // ElMessage({ |
| | | // type: 'success', |
| | | // message: 'å·²å
³é', |
| | | // }) |
| | | // this.auditDialog.visible = false |
| | | // }) |
| | | // }else{ |
| | | // this.auditDialog.visible = false |
| | | // } |
| | | this.auditDialog.visible = false; |
| | | }, |
| | | // è¡¨æ ¼è¡çé¢è² |
| | | tableRowClassName({ row }) { |
| | | if (row.auditStatus == 0) { |
| | | return 'black-row'; |
| | | } else if (row.auditStatus == 1 || row.auditStatus == 2) { |
| | | return 'deep-gray-row'; |
| | | } else { |
| | | return 'complete--gray-row'; |
| | | } |
| | | }, |
| | | /** |
| | | * åè¯·æ± |
| | | * @paramï¼å®¡æ ¸äººï¼å®¡æ ¸äººå¤æ³¨ï¼ä¼ä¸å¤æ³¨ï¼å¼å¸¸è®°å½ç¼å· 该æ¡å¼å¸¸çå®¡æ ¸ç¶æ |
| | | * @returnsï¼ |
| | | */ |
| | | sendAudit(user, checker, enterprise, exceptionId, status) { |
| | | submitApi |
| | | .submitAudit( |
| | | user, |
| | | this.auditDialog.checkerNotes, |
| | | this.auditDialog.enterpriseNotes, |
| | | exceptionId, |
| | | status |
| | | ) |
| | | .then((res) => { |
| | | if (res.data.code == 1) { |
| | | ElMessage.success('æäº¤æå'); |
| | | this.tableCurrentRowData.auditStatus = status; |
| | | this.tableCurrentRowData.checker = user; |
| | | if (checker) { |
| | | this.tableCurrentRowData.checkerContent = checker; |
| | | } |
| | | if (enterprise) { |
| | | this.tableCurrentRowData.enterpriseContent = enterprise; |
| | | } |
| | | |
| | | // æ´æ°åæçæ°æ® |
| | | setTimeout(() => { |
| | | this.gethasCheckedNumByTime(); |
| | | }, 1500); |
| | | |
| | | } else { |
| | | ElMessage.warning('æäº¤å¤±è´¥'); |
| | | } |
| | | this.loading.submitAudit = false; |
| | | this.auditDialog.visible = false; |
| | | }); |
| | | }, |
| | | // æ´æ°å®¡æ ¸å
容 |
| | | updateAud(exceptionId, checkerContent, enterpriseContent, auditStatus) { |
| | | submitApi |
| | | .updateAudit( |
| | | exceptionId, |
| | | checkerContent, |
| | | enterpriseContent, |
| | | auditStatus |
| | | ) |
| | | .then((res) => { |
| | | if (res.data.code == 1) { |
| | | ElMessage.success('æäº¤æå'); |
| | | this.tableCurrentRowData.auditStatus = auditStatus; |
| | | |
| | | if (checkerContent) { |
| | | this.tableCurrentRowData.checkerContent = checkerContent; |
| | | } |
| | | if (enterpriseContent) { |
| | | this.tableCurrentRowData.enterpriseContent = enterpriseContent; |
| | | } |
| | | |
| | | // æ´æ°åæçæ°æ® |
| | | setTimeout(() => { |
| | | this.gethasCheckedNumByTime(); |
| | | }, 1500); |
| | | } else { |
| | | ElMessage.warning('æäº¤å¤±è´¥'); |
| | | } |
| | | this.loading.submitAudit = false; |
| | | this.auditDialog.visible = false; |
| | | }); |
| | | }, |
| | | /** |
| | | * æäº¤å®¡æ ¸ |
| | | * @paramï¼ |
| | | * @returnsï¼ |
| | | */ |
| | | submitAudit() { |
| | | // åæ¶å¡«åäºå®¡æ ¸äººååä¼ä¸ç夿³¨ |
| | | this.loading.submitAudit = true; |
| | | if (this.auditDialog.checkerNotes && this.auditDialog.enterpriseNotes) { |
| | | this.sendAudit( |
| | | this.auditDialog.checker, |
| | | this.auditDialog.checkerNotes, |
| | | this.auditDialog.enterpriseNotes, |
| | | this.tableCurrentRowData.id, |
| | | 3 |
| | | ); |
| | | } |
| | | // åªå¡«äºå®¡æ ¸äººå夿³¨ |
| | | else if ( |
| | | this.auditDialog.checkerNotes && |
| | | !this.auditDialog.enterpriseNotes |
| | | ) { |
| | | // ç¬¬ä¸æ¬¡å建 |
| | | if (this.tableCurrentRowData.auditStatus == 0) { |
| | | this.sendAudit( |
| | | this.auditDialog.checker, |
| | | this.auditDialog.checkerNotes, |
| | | this.auditDialog.enterpriseNotes, |
| | | this.tableCurrentRowData.id, |
| | | 1 |
| | | ); |
| | | } |
| | | // åªæ´æ° |
| | | else { |
| | | this.updateAud( |
| | | this.tableCurrentRowData.id, |
| | | this.auditDialog.checkerNotes, |
| | | this.auditDialog.enterpriseNotes, |
| | | 3 |
| | | ); |
| | | } |
| | | } |
| | | // åªå¡«äºä¼ä¸å¤æ³¨å¤æ³¨ |
| | | else if ( |
| | | this.auditDialog.enterpriseNotes && |
| | | !this.auditDialog.checkerNotes |
| | | ) { |
| | | // ç¬¬ä¸æ¬¡å建 |
| | | if (this.tableCurrentRowData.auditStatus == 0) { |
| | | this.sendAudit( |
| | | this.auditDialog.checker, |
| | | this.auditDialog.checkerNotes, |
| | | this.auditDialog.enterpriseNotes, |
| | | this.tableCurrentRowData.id, |
| | | 2 |
| | | ); |
| | | } else { |
| | | // åªæ´æ° |
| | | this.updateAud( |
| | | this.tableCurrentRowData.id, |
| | | this.auditDialog.checkerNotes, |
| | | this.auditDialog.enterpriseNotes, |
| | | 3 |
| | | ); |
| | | } |
| | | } else { |
| | | ElMessage.warning('请填å宿´æè½æäº¤'); |
| | | } |
| | | |
| | | this.loading.submitAudit = false; |
| | | // æ¸
é¤ |
| | | this.auditDialog.checkerNotes = ''; |
| | | this.auditDialog.enterpriseNotes = ''; |
| | | }, |
| | | |
| | | /** |
| | | * å¼¹åºå¯¹è¯æ¡å¹¶ä¸ä¿åå½åè¡æ°æ® |
| | | * @paramï¼ |
| | | * @createTime:2023-08-17 |
| | | * @returnsï¼ |
| | | */ |
| | | openAuditDiag(row) { |
| | | this.auditDialog.visible = true; |
| | | this.tableCurrentRowData = row; |
| | | console.log(row); |
| | | }, |
| | | |
| | | /** |
| | | * descriptionï¼ç¹å»å¼å¸¸ç«ç¹ååæ¶ è¿åçæ°æ® |
| | | * @paramï¼ |
| | | * @paramï¼ |
| | | * @createTime:2023-08-17 |
| | | * @returnsï¼ |
| | | */ |
| | | getAbnormalDataByClick(val) { |
| | | this.flag.originClick = 1 |
| | | this.flag.originClick = 1; |
| | | |
| | | this.tableData = val |
| | | this.total = this.tableData.length |
| | | this.tableData = val; |
| | | this.total = this.tableData.length; |
| | | // é»è®¤æ¾ç¤ºç¬¬ä¸é¡µ |
| | | this.handleCurrentChange(1); |
| | | }, |
| | | // ç¹å»è¡¨æ ¼çè¡æ¶ |
| | | selectTableRow() { |
| | | // ç¹å»è¡¨æ ¼çè¡æ¶ |
| | | selectTableRow() { |
| | | // è·åå½åè¡çç´¢å¼ |
| | | this.selectedRowIndex = this.displayData.indexOf(this.tableCurrentRowData); |
| | | |
| | | this.selectedRowIndex = this.displayData.indexOf( |
| | | this.tableCurrentRowData |
| | | ); |
| | | }, |
| | | |
| | | /** |
| | | * descriptionï¼è¿åæ¶é´æ°ç»ï¼ä»å¼å§æ¶é´çå15åéå°ç»ææ¶é´ä¸ºæ¢ã |
| | | * @paramï¼ å¼å¸¸çå¼å§,å¼å¸¸ç»ææ¶é´ |
| | | * @createTime:2023-08-17 |
| | | * @returnsï¼æ¯å¦12:00:00-13:00:00 æä»¥è¿åçæ°ç»å
ç´ æ¯ 12:00:00 ,12:15:00,12:30:00,12:45:00ï¼13:00:00 |
| | | */ |
| | | descTenTime(begin, end) { |
| | | let time = []; |
| | | if (begin == end) { |
| | | time.push(begin); |
| | | return time; |
| | | } |
| | | time.push(begin); |
| | | let temp = dayjs(begin).add(15, 'minute').format('YYYY-MM-DD HH:mm:ss'); |
| | | while (temp != end) { |
| | | time.push(temp); |
| | | temp = dayjs(temp).add(15, 'minute').format('YYYY-MM-DD HH:mm:ss'); |
| | | } |
| | | // å ä¸å¼å¸¸çç»ææ¶é´ |
| | | time.push(temp); |
| | | return time; |
| | | }, |
| | | /** |
| | | * descriptionï¼æçµææç½æ¶è®¾ç½®çè¡¨æ ¼æ°æ® |
| | | */ |
| | | setOfflineTbleData(){ |
| | | setOfflineTbleData() { |
| | | // æ æ°æ®æ¶çæ¶é´æ°ç» æ¶é´ç¸å·®15åé |
| | | const abnormalTimeTenMinute = this.descTenTime( |
| | | const abnormalTimeTenMinute = index.descFiftyTime( |
| | | this.tableCurrentRowData.beginTime, |
| | | this.tableCurrentRowData.endTime |
| | | ); |
| | |
| | | this.dialog.historyData.push({ |
| | | name: this.tableCurrentRowData.name, |
| | | mnCode: this.tableCurrentRowData.mnCode, |
| | | dutyCompany:this.tableCurrentRowData.dutyCompany, |
| | | dutyCompany: this.tableCurrentRowData.dutyCompany, |
| | | lst: abnormalTimeTenMinute[i], |
| | | dustValue: '' |
| | | }); |
| | |
| | | this.exceptionTotal = abnormalTimeTenMinute.length; |
| | | }, |
| | | |
| | | /** |
| | | * descriptionï¼è¿åå¼å§æ¶é´çå45åéçæ¶é´ç¹ï¼ç»ææ¶é´å45åéçæ¶é´ç¹ |
| | | * @paramï¼ å¼å¸¸çå¼å§æ¶é´ï¼å¼å¸¸çç»ææ¶é´ã |
| | | * @returnsï¼æ°ç»ãtime[0],time[1],time[2],time[3]åå«ä»£è¡¨å¼å¸¸åºé´å45åéçæ¶é´ç¹ï¼å15åéçæ¶é´ç¹,å15åéçæ¶é´ç¹ï¼å45åéçæ¶é´ç¹ |
| | | */ |
| | | before45AndAfter45(begin, end) { |
| | | let time = []; |
| | | // å䏿®µçå¼å§æ¶é´ |
| | | const before45MinBegin = dayjs(begin) |
| | | .subtract(45, 'minute') |
| | | .format('YYYY-MM-DD HH:mm:ss'); |
| | | // å䏿®µçç»ææ¶é´ |
| | | const before15MinBegin = dayjs(begin) |
| | | .subtract(15, 'minute') |
| | | .format('YYYY-MM-DD HH:mm:ss'); |
| | | |
| | | // å䏿®µçå¼å§æ¶é´ |
| | | const after15MinBegin = dayjs(end) |
| | | .add(15, 'minute') |
| | | .format('YYYY-MM-DD HH:mm:ss'); |
| | | // å¾å40åé |
| | | const after45MinEnd = dayjs(end) |
| | | .add(45, 'minute') |
| | | .format('YYYY-MM-DD HH:mm:ss'); |
| | | time.push(before45MinBegin); |
| | | time.push(before15MinBegin); |
| | | time.push(after15MinBegin); |
| | | time.push(after45MinEnd); |
| | | return time; |
| | | }, |
| | | /** |
| | | * descriptionï¼è¿åæç«ç¹å¨è¯¥æ¶æ®µå岿°æ®çget请æ±åæ° |
| | | * @paramï¼ ç«ç¹åç§°ï¼ å¼å§æ¶é´ï¼ ç»ææ¶é´ |
| | | * @returnsï¼å¯¹è±¡ |
| | | */ |
| | | requestGetParms(name, begin, end) { |
| | | return { |
| | | siteName: name, |
| | | beginTime: begin, |
| | | endTime: end |
| | | }; |
| | | }, |
| | | /** |
| | | * descriptionï¼ç¸å·®å¤å°ä¸ª15åé 计ç®ä¸å
æ¬å¼å§æ¶é´ï¼ç»ææ¶é´ã |
| | | * @paramï¼ å¼å¸¸å¼å§æ¶é´ï¼å¼å¸¸ç»ææ¶é´ |
| | | * @returnsï¼æ´æ° |
| | | */ |
| | | diffFiftyMinutesNum(beginNormal, endNormal) { |
| | | // å°å¼å§æ¶é´åç»ææ¶é´è½¬æ¢ä¸ºdayjs对象 |
| | | const start = dayjs(beginNormal).subtract(15, 'minute'); |
| | | const end = dayjs(endNormal); |
| | | |
| | | // 计ç®ç»ææ¶é´åå»å¼å§æ¶é´ä¸é´ç¸å·®å¤å°ä¸ªååé |
| | | const diffInMinutes = end.diff(start, 'minute'); |
| | | const diffInTenMinutes = Math.floor(diffInMinutes / 15); |
| | | return diffInTenMinutes; |
| | | }, |
| | | // æ®µçµææç½åºé´æ æ°æ®ï¼éè¦è¡¥å
ãå
¶ä»çé½ææ°æ®ï¼ç´æ¥ä¸æ¬¡è¯·æ±å
¨é¨æ¶æ®µå°±å¥½ |
| | | |
| | | // æ ¹æ®å¼å¸¸åºé´æé åå端é¦å°¾ ååºé´ ä¸é´åºé´ ååºé´ |
| | |
| | | * descriptionï¼ä¸æ¬¡è¯·æ±ååä¸ååºé´çæ°æ®,å¯¹æ°æ®è¿è¡åæ |
| | | * @paramï¼ åä¸ååºé´ç请æ±åæ°ï¼åä¸åçæ»åºé´æ¶é´ï¼å¼å¸¸å¼å§æ¶é´ï¼ä¸åºç»ææ¶é´ |
| | | */ |
| | | otherExceptionRequest(allTimeArgs,allTime,exceptionBT,exceptionET) { |
| | | // æçº¿å¾å è½½ä¸ææ |
| | | this.loading.lineChart = true |
| | | otherExceptionRequest(allTimeArgs, allTime, exceptionBT, exceptionET) { |
| | | // æçº¿å¾å è½½ä¸ææ |
| | | this.loading.lineChart = true; |
| | | this.$http |
| | | .get('/dust/history', { params: allTimeArgs }) |
| | | .then((result) => { |
| | | this.dialog.allExceptionTimeData = result.data.data; |
| | | // æçµææç½æ¶éæ°è®¾ç½®è¡¨æ ¼ |
| | | if(this.tableCurrentRowData.exceptionType == '0'){ |
| | | this.setOfflineTbleData() |
| | | } |
| | | // æçµææç½æ¶éæ°è®¾ç½®è¡¨æ ¼ |
| | | if (this.tableCurrentRowData.exceptionType == '0') { |
| | | this.setOfflineTbleData(); |
| | | } |
| | | |
| | | // xè½´æ¥ææ¶é´ |
| | | let dateList = []; |
| | | // yè½´ è¶
æ æ²¹çæµåº¦ |
| | | let dustValue = []; |
| | | let timeAndValue = {}; |
| | | // xè½´æ¥ææ¶é´ |
| | | let dateList = []; |
| | | // yè½´ è¶
æ æ²¹çæµåº¦ |
| | | let dustValue = []; |
| | | let timeAndValue = {}; |
| | | |
| | | // 仿·»å äºé¦ä½åºé´çå¼å§åç»ææ¶é´è¿è¡éå ä¿è¯æ¶é´ä»¥10åé为é´é |
| | | timeAndValue = this.keepContinuousByEachFiftyMinutes( |
| | | // 仿·»å äºé¦ä½åºé´çå¼å§åç»ææ¶é´è¿è¡éå ä¿è¯æ¶é´ä»¥10åé为é´é |
| | | timeAndValue = index.keepContinuousByEachFiftyMinutes( |
| | | allTime[0], |
| | | allTime[3], |
| | | this.dialog.allExceptionTimeData |
| | | ); |
| | | dateList = timeAndValue['xAxis']; |
| | | dustValue = timeAndValue['yAxis']; |
| | | |
| | | // æåå¼å¸¸èµ·å§æ¶é´ç¹å¨æ´ä¸ªåºé´å
çæ°æ®ç´¢å¼ |
| | | let startIndex = dateList.findIndex( |
| | | (item) => item === exceptionBT |
| | | ); |
| | | let endIndex = dateList.findIndex((item) => item === exceptionET); |
| | | ); |
| | | dateList = timeAndValue['xAxis']; |
| | | dustValue = timeAndValue['yAxis']; |
| | | |
| | | // 设置æçº¿å¾é
置项 |
| | | this.reSetChart(dateList,dustValue,exceptionBT, exceptionET, |
| | | startIndex, |
| | | endIndex) |
| | | this.loading.lineChart = false |
| | | }); |
| | | |
| | | }, |
| | | /** |
| | | * descriptionï¼å¤ædata䏿¯å¦æè¯¥æ¥ææ¶é´ï¼åå¨è¿å该æ¶é´å¯¹åºçæµåº¦å¼ï¼å¦åè¿å-1 |
| | | * @paramï¼ å ä¸åååºé´çå¼å¸¸æ°æ®ï¼æ¶é´å符串 |
| | | * @returnsï¼ |
| | | */ |
| | | findTimeInExceptionData(data, time) { |
| | | for (let i = 0; i < data.length; i++) { |
| | | if (data[i] == null) { |
| | | continue; |
| | | } |
| | | if (data[i]['lst'] == time) { |
| | | return data[i]['dustValue']; |
| | | } |
| | | } |
| | | return -1; |
| | | }, |
| | | /** |
| | | * descriptionï¼æ ¹æ®å¼å§åç»ææ¶é´,è¿å以15åé为é´éçæ¶é´å对åºçå¼ |
| | | * @paramï¼ ååºé´çå¼å§æ¶é´ï¼ ååºé´çç»ææ¶é´, å ä¸åååºé´çæ»æ¶é´æ®µçå¼å¸¸æ°æ®ç对象æ°ç» |
| | | * @returnsï¼å¯¹è±¡ãå
å«äºæçº¿å¾çxè½´ï¼yè½´çé
ç½®æ°æ® |
| | | */ |
| | | keepContinuousByEachFiftyMinutes( |
| | | intervalStarTime, |
| | | intervalEndTime, |
| | | headAndTailExceptionData |
| | | ) { |
| | | let xAxis = []; |
| | | let yAxis = []; |
| | | let obj = {}; |
| | | let current = intervalStarTime; |
| | | let tail = dayjs(intervalEndTime) |
| | | .add(15, 'minute') |
| | | .format('YYYY-MM-DD HH:mm:ss'); |
| | | while (current != tail) { |
| | | let value = this.findTimeInExceptionData( |
| | | headAndTailExceptionData, |
| | | current |
| | | ); |
| | | if (value != -1) { |
| | | xAxis.push(current); |
| | | yAxis.push(value); |
| | | } else { |
| | | xAxis.push(current); |
| | | yAxis.push(null); |
| | | } |
| | | current = dayjs(current) |
| | | .add(15, 'minute') |
| | | .format('YYYY-MM-DD HH:mm:ss'); |
| | | } |
| | | obj['xAxis'] = xAxis; |
| | | obj['yAxis'] = yAxis; |
| | | return obj; |
| | | // æåå¼å¸¸èµ·å§æ¶é´ç¹å¨æ´ä¸ªåºé´å
çæ°æ®ç´¢å¼ |
| | | let startIndex = dateList.findIndex((item) => item === exceptionBT); |
| | | let endIndex = dateList.findIndex((item) => item === exceptionET); |
| | | |
| | | // 设置æçº¿å¾é
置项 |
| | | this.reSetChart( |
| | | dateList, |
| | | dustValue, |
| | | exceptionBT, |
| | | exceptionET, |
| | | startIndex, |
| | | endIndex |
| | | ); |
| | | this.loading.lineChart = false; |
| | | }); |
| | | }, |
| | | |
| | | /** |
| | |
| | | ] |
| | | }; |
| | | break; |
| | | // è¶
æ |
| | | // è¶
æ |
| | | case '2': |
| | | this.dialog.option = { |
| | | tooltip: {}, |
| | |
| | | break; |
| | | // æ°æ®è¶
ä½ åªææ¶é´ç¹ |
| | | case '1': |
| | | this.dialog.option = { |
| | | this.dialog.option = { |
| | | tooltip: {}, |
| | | toolbox: { |
| | | // å·¥å
·æ |
| | |
| | | } |
| | | return item; |
| | | }), |
| | | |
| | | |
| | | markLine: { |
| | | symbol: 'none', |
| | | itemStyle: { |
| | |
| | | } |
| | | }; |
| | | break; |
| | | case '3' : |
| | | case '3': |
| | | this.dialog.option = { |
| | | tooltip: {}, |
| | | toolbox: { |
| | |
| | | }; |
| | | break; |
| | | case '4': |
| | | this.dialog.option = { |
| | | this.dialog.option = { |
| | | tooltip: {}, |
| | | toolbox: { |
| | | // å·¥å
·æ |
| | |
| | | } |
| | | ] |
| | | ] |
| | | }, |
| | | |
| | | } |
| | | } |
| | | ], |
| | | // æå®æ¶é´åºé´ç线段åé¢è² |
| | |
| | | }; |
| | | break; |
| | | default: |
| | | console.log('没æè®¾ç½®è¯¥å¼å¸¸ç±»åï¼');; |
| | | console.log('没æè®¾ç½®è¯¥å¼å¸¸ç±»åï¼'); |
| | | } |
| | | this.flag.banTouch = 0 |
| | | this.flag.banTouch = 0; |
| | | }, |
| | | /** |
| | | * descriptionï¼åååºå¼å¸¸èµ·å§æ¶é´ï¼æé 请æ±åä¸åçåæ° |
| | | */ |
| | | timeAndDataProcessed() { |
| | | |
| | | //å¼å¸¸çå¼å§æ¶é´ ç»ææ¶é´ |
| | | let exceptionBeginTime = this.tableCurrentRowData.beginTime; |
| | | let exceptionEndTime = this.tableCurrentRowData.endTime; |
| | |
| | | // beforeAndAfterTime[1]:å15åéçæ¶é´ç¹ |
| | | // beforeAndAfterTime[2]:å15åéçæ¶é´ç¹ |
| | | // beforeAndAfterTime[3]:å45åéçæ¶é´ç¹ |
| | | let beforeAndAfterTime = this.before45AndAfter45( |
| | | let beforeAndAfterTime = index.before45AndAfter45( |
| | | exceptionBeginTime, |
| | | exceptionEndTime |
| | | ); |
| | | |
| | | // æé å¼å¸¸æ¶é´åååºé´æ°æ®è¯·æ±åæ°(é¤äºæç½ä¸é½ç¨å°ï¼ |
| | | let paramsAllTime = this.requestGetParms( |
| | | let paramsAllTime = index.requestGetParms( |
| | | this.tableCurrentRowData.name, |
| | | beforeAndAfterTime[0], |
| | | beforeAndAfterTime[3] |
| | | ); |
| | | // å°å¼å¸¸æ°æ®è¿è¡é¢å¤çï¼éåå°ç»æä½ä¸ºæçº¿å¾çé
置项 |
| | | // å°å¼å¸¸æ°æ®è¿è¡é¢å¤çï¼éåå°ç»æä½ä¸ºæçº¿å¾çé
置项 |
| | | |
| | | this.otherExceptionRequest(paramsAllTime,beforeAndAfterTime,exceptionBeginTime,exceptionEndTime) |
| | | this.otherExceptionRequest( |
| | | paramsAllTime, |
| | | beforeAndAfterTime, |
| | | exceptionBeginTime, |
| | | exceptionEndTime |
| | | ); |
| | | }, |
| | | |
| | | /** |
| | | * descriptionï¼è·åä¸ä¸æ¡å¼å¸¸ä¿¡æ¯ |
| | | */ |
| | | getPreviousRowData() { |
| | | // // 䏿¯è¡¨æ ¼çæåä¸è¡ |
| | | // // 䏿¯è¡¨æ ¼çæåä¸è¡ |
| | | if (this.selectedRowIndex < this.displayData.length - 1) { |
| | | // ç¹å»è¿ç¨ä¸ éä½ä¸ä¸æ¡æé® å¨è®¾ç½®å®å¾å½¢é
置项åè§£é |
| | | this.flag.banTouch = 1 |
| | | this.flag.banTouch = 1; |
| | | |
| | | //å¾å°ä¸ä¸è¡æ°æ®ç´¢å¼ |
| | | this.selectedRowIndex = this.selectedRowIndex + 1; |
| | |
| | | // this.setinfo(this.selectedRowIndex); |
| | | |
| | | // å¾å°ä¸ä¸è¡çæ°æ® |
| | | this.tableCurrentRowData = this.displayData[this.selectedRowIndex] |
| | | let params = this.requestGetParms(this.tableCurrentRowData.name,this.tableCurrentRowData.beginTime,this.tableCurrentRowData.endTime) |
| | | this.loading.preButton = true |
| | | this.$http |
| | | .get('/dust/history', { params: params }) |
| | | .then((response) => { |
| | | // ä¿åè¿åçè¶
æ æ°æ® |
| | | this.dialog.historyData = response.data.data; |
| | | this.dialog.exceptionTotal = response.data.data.length; |
| | | // é»è¾å¤ç |
| | | this.timeAndDataProcessed() |
| | | this.loading.preButton = false |
| | | }); |
| | | this.tableCurrentRowData = this.displayData[this.selectedRowIndex]; |
| | | let params = index.requestGetParms( |
| | | this.tableCurrentRowData.name, |
| | | this.tableCurrentRowData.beginTime, |
| | | this.tableCurrentRowData.endTime |
| | | ); |
| | | this.loading.preButton = true; |
| | | this.$http.get('/dust/history', { params: params }).then((response) => { |
| | | // ä¿åè¿åçè¶
æ æ°æ® |
| | | this.dialog.historyData = response.data.data; |
| | | this.dialog.exceptionTotal = response.data.data.length; |
| | | // é»è¾å¤ç |
| | | this.timeAndDataProcessed(); |
| | | this.loading.preButton = false; |
| | | }); |
| | | } |
| | | |
| | | //å¾å°ä¸ä¸è¡æ°æ®ç´¢å¼ |
| | | // this.selectedRowIndex = this.selectedRowIndex + 1; |
| | | // this.tableCurrentRowData = this.displayData[this.selectedRowIndex] |
| | | // console.log('å½åè¡æ°æ®ä¸º:',this.tableCurrentRowData); |
| | | }, |
| | | /** |
| | | * descriptionï¼è·åä¸ä¸æ¡å¼å¸¸ä¿¡æ¯ |
| | | */ |
| | | getNextRowData() { |
| | | // 䏿¯è¡¨æ ¼ç第ä¸è¡ |
| | | // 䏿¯è¡¨æ ¼ç第ä¸è¡ |
| | | if (this.selectedRowIndex !== 0) { |
| | | // ç¹å»è¿ç¨ä¸ éä½ä¸ä¸æ¡æé® å¨è®¾ç½®å®å¾å½¢é
置项åè§£é |
| | | this.flag.banTouch = 1 |
| | | this.flag.banTouch = 1; |
| | | |
| | | //å¾å°ä¸ä¸è¡æ°æ®ç´¢å¼ |
| | | this.selectedRowIndex = this.selectedRowIndex - 1; |
| | | //è¯·æ±æ°æ® æ¹åexceedingData |
| | | // this.setinfo(this.selectedRowIndex); |
| | | |
| | | // å¾å°ä¸ä¸è¡çæ°æ® |
| | | this.tableCurrentRowData = this.displayData[this.selectedRowIndex] |
| | | // å¾å°ä¸ä¸è¡çæ°æ® |
| | | this.tableCurrentRowData = this.displayData[this.selectedRowIndex]; |
| | | |
| | | let params = this.requestGetParms(this.tableCurrentRowData.name,this.tableCurrentRowData.beginTime,this.tableCurrentRowData.endTime) |
| | | this.loading.afterButton = true |
| | | this.$http |
| | | .get('/dust/history', { params: params }) |
| | | .then((response) => { |
| | | // ä¿åè¿åçè¶
æ æ°æ® |
| | | this.dialog.historyData = response.data.data; |
| | | this.dialog.exceptionTotal = response.data.data.length; |
| | | // é»è¾å¤ç |
| | | this.timeAndDataProcessed() |
| | | this.loading.afterButton = false |
| | | }); |
| | | let params = index.requestGetParms( |
| | | this.tableCurrentRowData.name, |
| | | this.tableCurrentRowData.beginTime, |
| | | this.tableCurrentRowData.endTime |
| | | ); |
| | | this.loading.afterButton = true; |
| | | this.$http.get('/dust/history', { params: params }).then((response) => { |
| | | // ä¿åè¿åçè¶
æ æ°æ® |
| | | this.dialog.historyData = response.data.data; |
| | | this.dialog.exceptionTotal = response.data.data.length; |
| | | // é»è¾å¤ç |
| | | this.timeAndDataProcessed(); |
| | | this.loading.afterButton = false; |
| | | }); |
| | | } |
| | | }, |
| | | |
| | | /** |
| | | * descriptionï¼ä»åç»ä»¶è·å¾æç«ç¹è¯¥æ¶æ®µçå¼å¸¸æ°æ® |
| | | * @createTime:2023-08-18 |
| | | */ |
| | | backExceptionData(val1, val2) { |
| | | this.displayData = val1; |
| | | this.total = val2; |
| | | }, |
| | | |
| | | /** |
| | | * descriptionï¼å½ç¨æ·æ¹åæ¥è¯¢çæ¶é´åºé´æ¶ï¼ä¼æ ¹æ®è¯¥åºé´æ¥è¯¢åå¼å¸¸çç«ç¹ï¼æ¥è¯¢è¯¥æ¶é´åºé´çåå¼å¸¸æ°é |
| | | * @createTime:2023-08-18 |
| | | */ |
| | | getShopNames() { |
| | | /* æ¥è¯¢å¼å¸¸çç«ç¹ */ |
| | | this.$http |
| | | .get('/dust/sitenamecode', { |
| | | params: { |
| | | exceptionType: '0', |
| | | beginTime: this.beginTime, |
| | | endTime: this.endTime |
| | | } |
| | | }) |
| | | .then((result) => { |
| | | this.exception.exception0 = result.data.data; |
| | | }); |
| | | this.$http |
| | | .get('/dust/sitenamecode', { |
| | | params: { |
| | | exceptionType: '1', |
| | | beginTime: this.beginTime, |
| | | endTime: this.endTime |
| | | } |
| | | }) |
| | | .then((result) => { |
| | | this.exception.exception1 = result.data.data; |
| | | }); |
| | | this.$http |
| | | .get('/dust/sitenamecode', { |
| | | params: { |
| | | exceptionType: '2', |
| | | beginTime: this.beginTime, |
| | | endTime: this.endTime |
| | | } |
| | | }) |
| | | .then((result) => { |
| | | this.exception.exception2 = result.data.data; |
| | | }); |
| | | |
| | | this.$http |
| | | .get('/dust/sitenamecode', { |
| | | params: { |
| | | exceptionType: '3', |
| | | beginTime: this.beginTime, |
| | | endTime: this.endTime |
| | | } |
| | | }) |
| | | .then((result) => { |
| | | this.exception.exception3 = result.data.data; |
| | | }); |
| | | |
| | | this.$http |
| | | .get('/dust/sitenamecode', { |
| | | params: { |
| | | exceptionType: '4', |
| | | beginTime: this.beginTime, |
| | | endTime: this.endTime |
| | | } |
| | | }) |
| | | .then((result) => { |
| | | this.exception.exception4 = result.data.data; |
| | | }); |
| | | this.$http |
| | | .get('/dust/sitenamecode', { |
| | | params: { |
| | | exceptionType: '5', |
| | | beginTime: this.beginTime, |
| | | endTime: this.endTime |
| | | } |
| | | }) |
| | | .then((result) => { |
| | | this.exception.exception5 = result.data.data; |
| | | }); |
| | | this.$http |
| | | .get('/dust/sitenamecode', { |
| | | params: { |
| | | exceptionType: '6', |
| | | beginTime: this.beginTime, |
| | | endTime: this.endTime |
| | | } |
| | | }) |
| | | .then((result) => { |
| | | this.exception.exception6 = result.data.data; |
| | | }); |
| | | |
| | | |
| | | |
| | | /* å¼å¸¸å¼å¸¸æ°é */ |
| | | this.$http |
| | | .get('/dust/exceptionnum', { |
| | | params: { |
| | | exceptionType: '0', |
| | | beginTime: this.beginTime, |
| | | endTime: this.endTime |
| | | } |
| | | }) |
| | | .then((result) => { |
| | | this.exception.exception0Num = result.data.data; |
| | | }); |
| | | this.$http |
| | | .get('/dust/exceptionnum', { |
| | | params: { |
| | | exceptionType: '1', |
| | | beginTime: this.beginTime, |
| | | endTime: this.endTime |
| | | } |
| | | }) |
| | | .then((result) => { |
| | | this.exception.exception1Num = result.data.data; |
| | | }); |
| | | this.$http |
| | | .get('/dust/exceptionnum', { |
| | | params: { |
| | | exceptionType: '2', |
| | | beginTime: this.beginTime, |
| | | endTime: this.endTime |
| | | } |
| | | }) |
| | | .then((result) => { |
| | | this.exception.exception2Num = result.data.data; |
| | | }); |
| | | |
| | | this.$http |
| | | .get('/dust/exceptionnum', { |
| | | params: { |
| | | exceptionType: '3', |
| | | beginTime: this.beginTime, |
| | | endTime: this.endTime |
| | | } |
| | | }) |
| | | .then((result) => { |
| | | this.exception.exception3Num = result.data.data; |
| | | }); |
| | | |
| | | this.$http |
| | | .get('/dust/exceptionnum', { |
| | | params: { |
| | | exceptionType: '4', |
| | | beginTime: this.beginTime, |
| | | endTime: this.endTime |
| | | } |
| | | }) |
| | | .then((result) => { |
| | | this.exception.exception4Num = result.data.data; |
| | | }); |
| | | this.$http |
| | | .get('/dust/exceptionnum', { |
| | | params: { |
| | | exceptionType: '5', |
| | | beginTime: this.beginTime, |
| | | endTime: this.endTime |
| | | } |
| | | }) |
| | | .then((result) => { |
| | | this.exception.exception5Num = result.data.data; |
| | | }); |
| | | this.$http |
| | | .get('/dust/exceptionnum', { |
| | | params: { |
| | | exceptionType: '6', |
| | | beginTime: this.beginTime, |
| | | endTime: this.endTime |
| | | } |
| | | }) |
| | | .then((result) => { |
| | | this.exception.exception6Num = result.data.data; |
| | | }); |
| | | }, |
| | | |
| | | /** |
| | | * descriptionï¼è¯·æ±å¼å¸¸çåºéºåå |
| | | * @paramï¼å¼å¸¸ç±»åï¼å¼å§æ¶é´ï¼ç»ææ¶é´ |
| | | * @createTime:2023-08-18 |
| | | * @returnsï¼ å¼å¸¸çæ°æ® |
| | | */ |
| | | // getSiteNameByExceptionType(exception, beginT, endT) { |
| | | // let param = { |
| | | // exceptionType: exception, |
| | | // beginTime: beginT, |
| | | // endTime: endT |
| | | // }; |
| | | |
| | | // this.$http.get('/dust/sitenamecode', { params: param }).then((res) => { |
| | | // return res.data.data; |
| | | // }); |
| | | // return; |
| | | // }, |
| | | |
| | | /** |
| | | * descriptionï¼æ¾ç¤ºå¯¹è¯æ¡,è¿å该å¼å¸¸æ¶é´æ®µçæææ°æ® |
| | |
| | | showDialog(row) { |
| | | // æå¼å¯¹è¯æ¡ |
| | | this.dialogTableVisible = true; |
| | | |
| | | |
| | | // ä¿åå½åè¡æ°æ® |
| | | this.tableCurrentRowData = row; |
| | | |
| | |
| | | this.dialog.historyData = response.data.data; |
| | | this.dialog.exceptionTotal = response.data.data.length; |
| | | // é»è¾å¤ç |
| | | this.timeAndDataProcessed() |
| | | this.timeAndDataProcessed(); |
| | | }); |
| | | }, |
| | | |
| | | /** |
| | | * descriptionï¼æ¡ä»¶æ¥è¯¢å¼å¸¸çæ°æ® |
| | | * @createTime:2023-08-18 |
| | |
| | | alert('æ¶é´è·¨åº¦ä¸è½è¶
è¿ä¸ä¸ªæ'); |
| | | return; |
| | | } |
| | | this.loading.queryButton = true |
| | | this.flag.originClick = 0 |
| | | this.loading.tableLoading = true; |
| | | |
| | | this.flag.originClick = 0; |
| | | |
| | | let params = {}; |
| | | params['page'] = this.currentPage; |
| | | params['pageSize'] = this.pageSize; |
| | |
| | | } |
| | | params['beginTime'] = this.beginTime; |
| | | params['endTime'] = this.endTime; |
| | | |
| | | this.loading.tableLoading = true; |
| | | this.loading.queryButton = true; |
| | | this.$http |
| | | .get('/dust/exceptiondata', { params: params }) |
| | | .then((response) => { |
| | | // ä¿åè¿åç |
| | | // this.tableData = response.data.data.rows; |
| | | this.displayData = response.data.data.rows; |
| | | this.loading.queryButton = false |
| | | this.loading.tableLoading = false; |
| | | this.loading.queryButton = false; |
| | | |
| | | if (response.data.data.total == 0) { |
| | | ElMessage('è¯¥æ¶æ®µæ æ°æ®'); |
| | | this.isNoData = true; |
| | | return; |
| | | } |
| | | this.total = response.data.data.total; |
| | | this.loading.tableLoading = false; |
| | | // ç§»é¤ç©ºæ°æ®ç¶æ |
| | | this.isNoData = false; |
| | | }); |
| | | this.gethasCheckedNumByTime(); |
| | | }, |
| | | |
| | | /** |
| | |
| | | |
| | | if (response.data.data.total == 0) { |
| | | ElMessage('è¯¥æ¶æ®µæ æ°æ®'); |
| | | this.loading.tableLoading = false; |
| | | this.isNoData = true; |
| | | return; |
| | | } |
| | | this.total = response.data.data.total; |
| | | this.loading.tableLoading = false; |
| | | this.total = response.data.data.total; |
| | | }); |
| | | this.gethasCheckedNumByTime(); |
| | | }, |
| | | |
| | | /** |
| | |
| | | const h2 = this.$refs.h2.$el.offsetHeight; |
| | | const h4 = this.$refs.h4.$el.offsetHeight; |
| | | // å
¶ä¸ä¸ä¸ª40æ¯çåçæ»å¤è¾¹è· |
| | | this.tableHeight = `calc(100vh - ${h1}px - ${h2}px - ${h4}px - 100px - var(--el-main-padding) * 2)`; |
| | | this.tableHeight = `calc(100vh - ${h1}px - ${h2}px - ${h4}px - 20px - 100px - var(--el-main-padding) * 2)`; |
| | | // this.tableHeight = `calc(100vh - ${h1}px - ${h4}px - 100px - var(--el-main-padding) * 2)`; |
| | | }, |
| | | |
| | | // 页大尿¹åæ¶è§¦å |
| | |
| | | // å°å½å页å·ç»currentPage |
| | | this.currentPage = val; |
| | | |
| | | |
| | | // 页é¢ååæ¶è°ç¨ æ¥è¯¢æ°æ®å½æ° |
| | | if(this.flag.originClick==0){ |
| | | if (this.flag.originClick == 0) { |
| | | this.handleSubmit(); |
| | | }else if(this.flag.originClick ==1){ |
| | | } else if (this.flag.originClick == 1) { |
| | | const startIndex = (val - 1) * this.pageSize; |
| | | const endIndex = startIndex + this.pageSize; |
| | | |
| | |
| | | </script> |
| | | |
| | | <template> |
| | | |
| | | <el-row ref="h1"> |
| | | <el-col> |
| | | <el-form :inline="true"> |
| | | <div class="head-container-text"> |
| | | <el-form-item > |
| | | <AreaAndmonitorType ></AreaAndmonitorType> |
| | | <el-form-item> |
| | | <AreaAndmonitorType></AreaAndmonitorType> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <InputSearch |
| | | :isNeedDefaultSite="0" |
| | | isNeedDefaultSite="0" |
| | | @submit-value="(n) => (form.name = n)" |
| | | @submit-site-Nums="(n) => (siteTotal = n)" |
| | | > |
| | | </InputSearch> |
| | | </el-form-item> |
| | | |
| | | |
| | | |
| | | <el-form-item> |
| | | <TimeSelectWithShortCuts @submit-time="giveTime"></TimeSelectWithShortCuts> |
| | | <TimeSelectWithShortCuts |
| | | @submit-time="giveTime" |
| | | timeType="month" |
| | | ></TimeSelectWithShortCuts> |
| | | </el-form-item> |
| | | |
| | | <el-form-item> |
| | | <ExceptionType |
| | | @submit-value="(n) => form.exceptionName = n" |
| | | @submit-value="(n) => (form.exceptionName = n)" |
| | | ></ExceptionType> |
| | | </el-form-item> |
| | | </div> |
| | | |
| | | <div class="head-container-search"> |
| | | <span class="head-describtion-text"> |
| | | éå±±åº {{ beginTime }} ââ {{ endTime }} æ¬å°çæµå¼å¸¸ä¿¡æ¯æ±æ»</span |
| | | > |
| | | <el-form-item> |
| | | <el-button type="warning" :loading="loading.queryButton" @click="handleSubmit">æ¥è¯¢</el-button> |
| | | <!-- <el-button type="warning" :loading="loading.queryButton" @click="handleSubmit"><el-icon |
| | | style="margin-right: 6px;font-size: 1.2em;"><i-ep-Search /></el-icon>æ¥è¯¢</el-button> --> |
| | | <ButtonClick |
| | | content="æç´¢" |
| | | type="warning" |
| | | :loading="loading.queryButton" |
| | | @do-search="handleSubmit" |
| | | ></ButtonClick> |
| | | </el-form-item> |
| | | </div> |
| | | </el-form> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | <el-row class="head-describtion-text" ref="h2"> |
| | | <el-row> |
| | | <span> éå±±åº {{ beginTime }} ââ {{ endTime }} æ¬å°çæµå¼å¸¸ä¿¡æ¯æ±æ»</span> |
| | | </el-row> |
| | | </el-row> |
| | | <!-- <el-row class="anasysis" ref="h2"> |
| | | <el-col :span="6"> |
| | | <el-card> |
| | | <el-statistic title="å
¨é¨å®¡æ ¸æ°" :value="total" /> |
| | | </el-card> |
| | | </el-col> |
| | | |
| | | <el-col :span="6"> |
| | | <el-card> |
| | | <el-statistic title="å¾
å®¡æ ¸æ°" :value="unCheckedNUm"> </el-statistic> |
| | | </el-card> |
| | | </el-col> |
| | | |
| | | <el-col :span="6"> |
| | | <el-card> |
| | | <el-statistic title="å·²å®¡æ ¸æ°" :value="auditNumByTime" /> |
| | | </el-card> |
| | | </el-col> |
| | | |
| | | <el-col :span="6"> |
| | | <el-card> |
| | | <el-statistic title="å®¡æ ¸æ¯ä¾" :value="checkedRate"> |
| | | <template #suffix> % </template> |
| | | </el-statistic> |
| | | </el-card> |
| | | </el-col> |
| | | </el-row> --> |
| | | |
| | | |
| | | <div class="checknum"> |
| | | <el-row class="anasysis" ref="h2"> |
| | | <el-col :span="8"> |
| | | <span class="checknum-blue">åºå®¡æ ¸æ°ï¼</span> {{ total }}<span class="checknum-rate">({{ checkedRate }}%) </span> |
| | | </el-col> |
| | | |
| | | <el-col :span="8"> |
| | | <div><span class="checknum-green">å·²å®¡æ ¸æ°ï¼</span>{{ auditTotal }}</div> |
| | | <div>è§èå®¡æ ¸æ°ï¼{{ auditedRegular }}</div> |
| | | <div>é¨åå®¡æ ¸æ°ï¼{{ auditPart }}</div> |
| | | </el-col > |
| | | |
| | | <el-col :span="8"> |
| | | <span><span class="checknum-red">å¾
å®¡æ ¸æ°ï¼</span>{{ unCheckedNUm }}</span> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | |
| | | |
| | | <el-row> |
| | |
| | | ref="table" |
| | | :data="displayData" |
| | | :height="tableHeight" |
| | | highlight-current-row="true" |
| | | :highlight-current-row="true" |
| | | :row-class-name="tableRowClassName" |
| | | size="default" |
| | | v-loading="loading.tableLoading" |
| | | @selection-change="handleSelectionChange" |
| | | border |
| | | > |
| | | <el-table-column type="selection" width="55" align="center" /> |
| | | <el-table-column |
| | | type="index" |
| | | label="åºå·" |
| | |
| | | align="center" |
| | | show-overflow-tooltip |
| | | /> |
| | | <el-table-column label="æä½" align="center"> |
| | | <el-table-column label="æä½" align="center" width="200" fixed="right"> |
| | | <template #default="{ row }"> |
| | | <el-button type="primary" @click="showDialog(row)"> |
| | | æ¥ç详æ
|
| | | </el-button> |
| | | <el-button |
| | | type="primary" |
| | | class="table-button" |
| | | @click="showDialog(row)" |
| | | >æ¥ç详æ
</el-button |
| | | v-if="row.auditStatus == 3" |
| | | size="default" |
| | | type="info" |
| | | @click="openAuditDiag(row)" |
| | | >å·²å®¡æ ¸</el-button |
| | | > |
| | | <el-button |
| | | type="success" |
| | | size="default" |
| | | plain |
| | | v-else-if="row.auditStatus == 1 || row.auditStatus == 2" |
| | | @click="openAuditDiag(row)" |
| | | >å¾
å®¡æ ¸</el-button |
| | | > |
| | | |
| | | <el-button |
| | | v-else |
| | | size="default" |
| | | type="danger" |
| | | @click="openAuditDiag(row)" |
| | | >å¾
å®¡æ ¸</el-button |
| | | > |
| | | <!-- <span v-if="row.auditStatus == 3">å·²å®¡æ ¸</span |
| | | ><span v-else>å®¡æ ¸</span> --> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | |
| | | <!-- <el-row ref="h2"> |
| | | <el-row> --> |
| | | <div class="check-button"> |
| | | <el-button |
| | | type="primary" |
| | | size="small" |
| | | :disabled="multipleSelection.length == 0" |
| | | @click="quickReview" |
| | | >æ¹éå®¡æ ¸</el-button |
| | | > |
| | | <el-button |
| | | type="primary" |
| | | size="small" |
| | | :disabled="multipleSelection.length == 0" |
| | | @click="clearSelected" |
| | | >æ¸
é¤éä¸</el-button |
| | | > |
| | | </div> |
| | | <!-- </el-row> |
| | | </el-row> --> |
| | | |
| | | <el-pagination |
| | | ref="h4" |
| | |
| | | |
| | | <el-empty v-show="isNoData" :image-size="200" /> |
| | | |
| | | <el-dialog v-model="auditDialog.visible" :show-close="false" draggable> |
| | | <template #header> |
| | | <!-- <div class="title-text">æ·»å 夿³¨</div> --> |
| | | <span class="title-text">{{ tableCurrentRowData.name }}</span |
| | | ><span>ç«ç¹å¼å¸¸æ°æ®å®¡æ ¸</span> |
| | | </template> |
| | | |
| | | <el-form label-position="top"> |
| | | <el-form-item label="å®¡æ ¸äºº"> |
| | | <el-input v-model="auditDialog.checker"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="å®¡æ ¸æ
åµ"> |
| | | <el-input |
| | | v-model="auditDialog.checkerNotes" |
| | | type="textarea" |
| | | :autosize="true" |
| | | placeholder="å®¡æ ¸äººåå¡«å" |
| | | :disabled="tableCurrentRowData.auditStatus == 1" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="ä¼ä¸åé¦"> |
| | | <el-input |
| | | v-model="auditDialog.enterpriseNotes" |
| | | type="textarea" |
| | | :autosize="true" |
| | | placeholder="ä¼ä¸å¡«å" |
| | | :disabled="tableCurrentRowData.auditStatus == 2" |
| | | /> |
| | | </el-form-item> |
| | | </el-form> |
| | | |
| | | <el-card v-show="tableCurrentRowData.auditStatus==3"> |
| | | <template #header>å®¡æ ¸è¯¦æ
</template> |
| | | <el-form> |
| | | <el-form-item label="å®¡æ ¸äºº">{{ |
| | | tableCurrentRowData.checker |
| | | }}</el-form-item> |
| | | <el-form-item label="å®¡æ ¸æ
åµ">{{ |
| | | tableCurrentRowData.checkerContent |
| | | }}</el-form-item> |
| | | <el-form-item label="å®¡æ ¸äººå">{{ |
| | | tableCurrentRowData.enterpriseContent |
| | | }}</el-form-item> |
| | | </el-form> |
| | | </el-card> |
| | | |
| | | <template #footer> |
| | | <span class="dialog-footer"> |
| | | <el-button @click="close">åæ¶</el-button> |
| | | <el-button |
| | | type="primary" |
| | | :loading="loading.submitAudit" |
| | | :disabled="tableCurrentRowData.auditStatus == 3" |
| | | @click="submitAudit" |
| | | > |
| | | æäº¤ |
| | | </el-button> |
| | | </span> |
| | | </template> |
| | | </el-dialog> |
| | | |
| | | <el-dialog v-model="dialogTableVisible" draggable align-center height="300px"> |
| | | <!-- 头 --> |
| | | <template #header> |
| | | <div class="diag-head"> |
| | | <div class="diag-head-text"> |
| | | <div> |
| | | <span class="diag-head-text1">ç«ç¹åç§°ï¼</span |
| | | >{{ tableCurrentRowData.name }} |
| | | <span class="diag-head-text1">ç«ç¹åç§°ï¼</span |
| | | >{{ tableCurrentRowData.name }} |
| | | </div> |
| | | |
| | | <div> |
| | | <span class="diag-head-text1">å¼å¸¸ç±»åï¼</span> |
| | | <span v-if="tableCurrentRowData.exceptionType == '0'" |
| | | >æçµææç½</span |
| | | > |
| | | <span v-else-if="tableCurrentRowData.exceptionType == '1'" |
| | | >æ°æ®è¶
ä½</span |
| | | > |
| | | <span v-else-if="tableCurrentRowData.exceptionType == '2'">è¶
æ </span> |
| | | <span v-else-if="tableCurrentRowData.exceptionType == '3'" |
| | | >æ°æ®é¿æ¶é´æ æ³¢å¨</span |
| | | > |
| | | <span v-else-if="tableCurrentRowData.exceptionType == '4'" |
| | | >é级çªåå¼å¸¸</span |
| | | > <span v-else-if="tableCurrentRowData.exceptionType == '5'" |
| | | >临è¿è¶
æ å¼å¸¸</span |
| | | > <span v-else-if="tableCurrentRowData.exceptionType == '6'" |
| | | >忥è¶
æ æ¬¡æ°ä¸´çå¼å¸¸</span |
| | | > <span v-else-if="tableCurrentRowData.exceptionType == '7'" |
| | | >æ»å¨å¹³åå¼å¼å¸¸</span |
| | | > |
| | | </div> |
| | | <span class="diag-head-text1">å¼å¸¸ç±»åï¼</span> |
| | | <span v-if="tableCurrentRowData.exceptionType == '0'" |
| | | >æçµææç½</span |
| | | > |
| | | <span v-else-if="tableCurrentRowData.exceptionType == '1'" |
| | | >æ°æ®è¶
ä½</span |
| | | > |
| | | <span v-else-if="tableCurrentRowData.exceptionType == '2'" |
| | | >è¶
æ </span |
| | | > |
| | | <span v-else-if="tableCurrentRowData.exceptionType == '3'" |
| | | >æ°æ®é¿æ¶é´æ æ³¢å¨</span |
| | | > |
| | | <span v-else-if="tableCurrentRowData.exceptionType == '4'" |
| | | >é级çªåå¼å¸¸</span |
| | | > |
| | | <span v-else-if="tableCurrentRowData.exceptionType == '5'" |
| | | >临è¿è¶
æ å¼å¸¸</span |
| | | > |
| | | <span v-else-if="tableCurrentRowData.exceptionType == '6'" |
| | | >忥è¶
æ æ¬¡æ°ä¸´çå¼å¸¸</span |
| | | > |
| | | <span v-else-if="tableCurrentRowData.exceptionType == '7'" |
| | | >æ»å¨å¹³åå¼å¼å¸¸</span |
| | | > |
| | | </div> |
| | | |
| | | <div> |
| | | <span class="diag-head-text1">å¼å¸¸æ¶é´æ®µï¼</span |
| | |
| | | </div> |
| | | </template> |
| | | |
| | | <!-- :option="dialog.option" --> |
| | | |
| | | <!-- å¾å½¢ --> |
| | | <DustLineChart |
| | | :option="dialog.option" |
| | | :is-open-dialog="dialogTableVisible" |
| | | v-loading="loading.lineChart" |
| | | ></DustLineChart> |
| | | > |
| | | </DustLineChart> |
| | | |
| | | <!-- è¡¨æ ¼ --> |
| | | <div> |
| | |
| | | tableCurrentRowData.exceptionType == '1' || |
| | | tableCurrentRowData.exceptionType == '2' || |
| | | tableCurrentRowData.exceptionType == '3' || |
| | | tableCurrentRowData.exceptionType == '4' |
| | | tableCurrentRowData.exceptionType == '4' |
| | | " |
| | | >å¼å¸¸æ°æ®ï¼</span |
| | | > |
| | | <span class="table-line-num">{{ dialog.exceptionTotal }}æ¡</span> |
| | | <span |
| | | v-show=" |
| | | tableCurrentRowData.exceptionType === '0' |
| | | " |
| | | > |
| | | <span v-show="tableCurrentRowData.exceptionType === '0'"> |
| | | (é»è¾è®¡ç®)</span |
| | | > |
| | | </el-tag> |
| | |
| | | |
| | | <style lang="scss" scoped> |
| | | .el-row { |
| | | margin-left: 10px; |
| | | margin-left: 20px; |
| | | } |
| | | |
| | | /* æ¡ä»¶æ¥è¯¢æ¨¡åçæ ·å¼ */ |
| | | .head-container-search { |
| | | // display: flex; |
| | | // justify-content: flex-end; |
| | | float: right; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | // float: right; |
| | | } |
| | | |
| | | .head-describtion-text { |
| | | justify-content: flex-end; |
| | | margin-bottom: 10px; |
| | |
| | | |
| | | |
| | | |
| | | /* å¼å¸¸åææ¨¡åçæ ·å¼ */ |
| | | .card-text1 { |
| | | // é»ä½çå¼å¸¸ååé¨å |
| | | margin: 10px; |
| | | } |
| | | .card-text1 + div { |
| | | // é»ä½çå¼å¸¸ååä¸é¢ç |
| | | margin: 12px; |
| | | } |
| | | .card-exception-buttom { |
| | | // å¼å¸¸ç«ç¹ææ¬æé®åºå |
| | | padding: 11px; |
| | | } |
| | | .card-header { |
| | | margin-left: 5px; |
| | | font-size: 18px; |
| | | font-weight: bold; |
| | | } |
| | | .card-content-unnormal { |
| | | min-height: 200px; |
| | | border: 2px solid #FFCF8B; |
| | | border-radius: 20px; |
| | | } |
| | | .card-content-normal { |
| | | min-height: 200px; |
| | | border: 2px solid red; |
| | | border-radius: 20px; |
| | | } |
| | | .card-header-image { |
| | | } |
| | | .card-header-text { |
| | | font-size: 16px; |
| | | font-weight: bold; |
| | | margin-top: 4px; |
| | | margin-left: 4px; |
| | | } |
| | | .card-content-text { |
| | | white-space: nowrap; |
| | | } |
| | | .card-exceptionname-text1 { |
| | | // å¼å¸¸ç«ç¹å æ¯ |
| | | font-size: 14px; |
| | | white-space: nowrap; |
| | | } |
| | | |
| | | .card-exceptionname-text2 { |
| | | // å¼å¸¸æ°å æ¯çå¤è¾¹è· |
| | | // margin-left: 50px; |
| | | font-size: 14px; |
| | | white-space: nowrap; |
| | | } |
| | | .text-blank { |
| | | // éå· |
| | | margin-right: 10px; |
| | | color: #000000; |
| | | } |
| | | .card-row { |
| | | /*åæ */ |
| | | // .anasysis { |
| | | // margin-bottom: 20px; |
| | | // } |
| | | // :deep(.el-statistic__head) { |
| | | // font-weight: bold; |
| | | // font-size: 16px; |
| | | // } |
| | | .checknum { |
| | | border: 1px solid orange; |
| | | margin-bottom: 10px; |
| | | margin-left: 20px; |
| | | margin: 0px 5px 10px 20px; |
| | | } |
| | | .checknum-rate{ |
| | | margin-left: 5px; |
| | | } |
| | | .checknum-blue { |
| | | font-weight: bold; |
| | | color: blue; |
| | | } |
| | | |
| | | /* å¼å¸¸åææ¨¡åç»æ */ |
| | | .checknum-green { |
| | | font-weight: bold; |
| | | color: green; |
| | | } |
| | | .checknum-red { |
| | | font-weight: bold; |
| | | color: red; |
| | | } |
| | | /* åæç»æ */ |
| | | |
| | | |
| | | |
| | | |
| | | /* è¡¨æ ¼æ¨¡åçæ ·å¼ */ |
| | | :global(.el-table .black-row) { |
| | | color: black; |
| | | } |
| | | |
| | | :global(.el-table .complete--gray-row) { |
| | | color: #86909c; |
| | | } |
| | | :global(.el-table .deep-gray-row) { |
| | | color: #7f9fcf; |
| | | } |
| | | //å¯¹è¯æ¡æ é¢ |
| | | .el-form-item__labe { |
| | | font-weight: bold; |
| | | } |
| | | .title-text { |
| | | font-weight: bold; |
| | | margin-right: 20px; |
| | | } |
| | | .check-button { |
| | | // justify-content: flex-end; |
| | | float: right; |
| | | margin-top: 10px; |
| | | margin-right: 20px; |
| | | } |
| | | |
| | | /* è¡¨æ ¼æ¨¡åç»æ */ |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | /* æ¥ç详æ
å¯¹è¯æ¡æ¨¡åçæ ·å¼ */ |
| | | :deep(.el-dialog) { |
| | | // å¯¹è¯æ¡é«åº¦ |
| | | } |
| | | .diag-head { |
| | | // å¯¹è¯æ¡å¤´é¨åºå |
| | | min-height: 200px; |
| | | // border: 1px solid #fdc2db; |
| | | } |
| | | |
| | | .diag-head-text1 { |
| | | // å¯¹è¯æ¡å¤´é¨ç屿§å段å ç² |
| | | font-weight: bold; |
| | | } |
| | | .diag-head-text span:nth-child(2) { |
| | | // å¯¹è¯æ¡å¤´é¨âå¼å¸¸ç±»åâ屿§ |
| | | // margin-left: 150px; |
| | | } |
| | | |
| | | .diag-head-text > div { |
| | | // å¯¹è¯æ¡å¼å¸¸æ¶é´æ®µ |
| | | margin-top: 15px; |
| | | } |
| | | |
| | | .diag-head-text { |
| | | margin: 10px; |
| | | padding: 10px; |
| | | background: linear-gradient(90deg, #00c9ff 0%, #92fe9d 100%); |
| | | border: 2px solid #7bc0fc; |
| | | } |
| | | |
| | | .chart-jump-button { |
| | | // âä¸ä¸æ¡âï¼âä¸ä¸æ¡â æé® |
| | | // border: 1px solid #fdc2db; |
| | | min-height: 30px; |
| | | width: 200px; |
| | | float: right; |
| | |
| | | margin-bottom: 20px; |
| | | min-width: 600px; |
| | | } |
| | | |
| | | .mx-1 { |
| | | position: absolute; |
| | | left: 10px; |
| | | bottom: 10px; |
| | | |
| | | } |
| | | |
| | | /* æ¥ç详æ
å¯¹è¯æ¡æ¨¡åç»æ */ |
| | | </style> |
| | |
| | | <!-- æ¥åå¼ --> |
| | | <script> |
| | | import TimeSelectWithShortCuts from '../../sfc/TimeSelectWithShortCuts.vue'; |
| | | import InputSearch from '../../sfc/InputSearch.vue'; |
| | | import AreaAndmonitorType from '../../sfc/AreaAndmonitorType.vue'; |
| | | import TimeSelectWithShortCuts from '@/sfc/TimeSelectWithShortCuts.vue'; |
| | | import InputSearch from '@/sfc/InputSearch.vue'; |
| | | import AreaAndmonitorType from '@/sfc/AreaAndmonitorType.vue'; |
| | | |
| | | import DustRadarChart from './components/DustRadarChart.vue'; |
| | | import exceptionApi from '@/api/exceptionApi.js'; |
| | | import { useWindowSize } from '@vueuse/core'; |
| | | |
| | | import LineChart from './components/LineChart.vue' |
| | | |
| | | |
| | | // const DustRadarChart = defineAsyncComponent(() => |
| | | // import('./components/DustRadarChart.vue') |
| | | // ) |
| | | import LineChart from './components/LineChart.vue'; |
| | | |
| | | import dayjs from 'dayjs'; |
| | | export default { |
| | |
| | | // å
¸åå¼å¸¸å¤ç°ç |
| | | exceptionRecurrence: '', |
| | | // å¼å¸¸ç±»åæ®èé度 |
| | | exceptionTypeAggregation: '', |
| | | |
| | | exceptionTypeAggregation: '' |
| | | } |
| | | }; |
| | | }, |
| | | setup() { |
| | | const { height } = useWindowSize(); |
| | | return { height }; |
| | | |
| | | computed: { |
| | | weight() { |
| | | return ( |
| | | (100 - this.bill.online) * 0.1 + |
| | | (100 - this.bill.valid) * 0.2 + |
| | | this.bill.exceeding * 0.2 + |
| | | this.bill.exceptionTypeAggregation * 0.2 + |
| | | this.bill.exceptionRecurrence * 0.3 |
| | | ).toFixed(2); |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.fetch(); |
| | |
| | | let exceedindCriticalDegree = 0; |
| | | |
| | | // ä¿ååºç°çä¸åå¼å¸¸ç±»å |
| | | let exception = [] |
| | | let exception = []; |
| | | // å¼å¸¸ç±»åèé度 |
| | | let exceptionTypeAggregation = 0 |
| | | |
| | | exceptionArr.forEach(item => { |
| | | let exceptionTypeAggregation = 0; |
| | | |
| | | exceptionArr.forEach((item) => { |
| | | // å¼å¸¸å¤ç°ç |
| | | if (item.exceptionType == 4) { |
| | | mutationCount++; |
| | |
| | | } |
| | | |
| | | // å¼å¸¸ç±»åèé度 |
| | | if(exception.length == 0){ |
| | | exception.push(item.exceptionType) |
| | | if (exception.length == 0) { |
| | | exception.push(item.exceptionType); |
| | | } |
| | | // ä¿åæ°çå¼å¸¸ç±»å |
| | | else if(exception.indexOf(item.exceptionType) == -1){ |
| | | exception.push(item.exceptionType) |
| | | else if (exception.indexOf(item.exceptionType) == -1) { |
| | | exception.push(item.exceptionType); |
| | | } |
| | | }); |
| | | |
| | |
| | | if (exceedindCriticalDegree > 1) { |
| | | sum = sum + exceedindCriticalDegree - 1; |
| | | } |
| | | console.log('sum:',sum); |
| | | console.log('exception:',exception); |
| | | console.log('å
¶ä»',mutationCount,exceedindCriticalDegree,exceedindCriticalDegree); |
| | | console.log('sum:', sum); |
| | | console.log('exception:', exception); |
| | | console.log( |
| | | 'å
¶ä»', |
| | | mutationCount, |
| | | exceedindCriticalDegree, |
| | | exceedindCriticalDegree |
| | | ); |
| | | switch (sum) { |
| | | case 0: |
| | | exceptionTyprRecurRate = sum / 3; |
| | |
| | | return 'error'; |
| | | } |
| | | |
| | | exceptionTypeAggregation = exception.length / 8 |
| | | exceptionTypeAggregation = exception.length / 8; |
| | | |
| | | let obj = {} |
| | | obj['exceptionRecurrence'] = exceptionTyprRecurRate |
| | | obj['exceptionTypeAggregation'] = exceptionTypeAggregation |
| | | let obj = {}; |
| | | obj['exceptionRecurrence'] = exceptionTyprRecurRate; |
| | | obj['exceptionTypeAggregation'] = exceptionTypeAggregation; |
| | | |
| | | return obj |
| | | return obj; |
| | | }, |
| | | /** |
| | | * è®¡ç®æ¥æç¸å·®å 天 |
| | |
| | | * @returnsï¼ |
| | | */ |
| | | getDaysDifference(startDate, endDate) { |
| | | // var start = new Date(startDate); |
| | | // var end = new Date(endDate); |
| | | // var timeDiff = Math.abs(end.getTime() - start.getTime()); |
| | | // var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24)); |
| | | |
| | | |
| | | return dayjs(endDate).diff(startDate,'day') + 1; |
| | | return dayjs(endDate).diff(startDate, 'day') + 1; |
| | | }, |
| | | /** |
| | | * ä»åææ°æ®æ°ç»ä¸æ¾å°æå°åå¤§å¼ |
| | |
| | | let begin = dayjs(this.form.beginTime).format('YYYY-MM-DD'); |
| | | let end = dayjs(this.form.endTime).format('YYYY-MM-DD'); |
| | | let dayDiff = this.getDaysDifference(begin, end); |
| | | console.log('æ¥æé´é',dayDiff); |
| | | console.log('æ¥æé´é', dayDiff); |
| | | let obj = {}; |
| | | // è®¡ç®æå°åå¤§å¼ |
| | | arr.forEach((item) => { |
| | |
| | | |
| | | // ç¹å»å±ç¤ºæé® |
| | | fetchData() { |
| | | if ( |
| | | this.form.beginTime >= this.form.endTime && |
| | | (this.form.beginTime != null || this.form.endTime != null) && |
| | | (this.form.beginTime != '' || tthis.form.endTime != '') |
| | | ) { |
| | | alert('请è¾å
¥ææçæ¶é´æ®µ'); |
| | | return; |
| | | } |
| | | let params = {}; |
| | | if (this.form.name) { |
| | | params['siteName'] = this.form.name; |
| | |
| | | this.bill.valid = temp['valid']; |
| | | this.bill.exceeding = temp['exceeding']; |
| | | |
| | | this.begin = this.chartData[0].lst |
| | | this.end = this.chartData[this.chartData.length-1].lst |
| | | this.begin = this.chartData[0].lst; |
| | | this.end = this.chartData[this.chartData.length - 1].lst; |
| | | }); |
| | | }, |
| | | |
| | |
| | | }) |
| | | .then((res) => { |
| | | console.log('å¼å¸¸ï¼', res.data.data); |
| | | let obj = this.calRecur(res.data.data) |
| | | this.bill.exceptionRecurrence = obj['exceptionRecurrence'] |
| | | this.bill.exceptionTypeAggregation = obj['exceptionTypeAggregation'] |
| | | let obj = this.calRecur(res.data.data); |
| | | this.bill.exceptionRecurrence = obj['exceptionRecurrence']; |
| | | this.bill.exceptionTypeAggregation = obj['exceptionTypeAggregation']; |
| | | }); |
| | | } |
| | | } |
| | |
| | | <div class="search-container"> |
| | | <el-container> |
| | | <el-main> |
| | | |
| | | <el-form :inline="true" :model="form"> |
| | | |
| | | <el-form-item> |
| | | <AreaAndmonitorType></AreaAndmonitorType> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <InputSearch |
| | | :isNeedDefaultSite="1" |
| | | isNeedDefaultSite="1" |
| | | @submit-value="(n) => (form.name = n)" |
| | | ></InputSearch> |
| | | </el-form-item> |
| | |
| | | @submit-time="giveTime" |
| | | ></TimeSelectWithShortCuts> |
| | | </el-form-item> |
| | | |
| | | |
| | | |
| | | <el-form-item> |
| | | <el-button type="primary" @click="fetch">å±ç¤ºæçº¿å¾</el-button> |
| | | </el-form-item> |
| | | |
| | | </el-form> |
| | | |
| | | <div class="time-text">æ°æ®ç»è®¡æ¶æ®µï¼{{ begin}} ~ {{ end }}</div> |
| | | <div class="time-text">æ°æ®ç»è®¡æ¶æ®µï¼{{ begin }} ~ {{ end }}</div> |
| | | |
| | | <el-row :gutter="20"> |
| | | <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="16" > |
| | | |
| | | <el-card |
| | | shadow="never" |
| | | > |
| | | <DustRadarChart :name="['æ°æ®ææç','å
¸åå¼å¸¸å¤ç°ç','å¼å¸¸ç±»åèé度','æ°æ®è¶
æ ç','æ°æ®å¨çº¿ç']" :yData="[bill.valid,bill.exceptionRecurrence,bill.exceptionTypeAggregation,bill.exceeding,bill.online]" ></DustRadarChart> |
| | | <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="16"> |
| | | <el-card shadow="never"> |
| | | <DustRadarChart |
| | | :name="[ |
| | | 'æ°æ®ææçé£é©', |
| | | 'å
¸åå¼å¸¸å¤ç°çé£é©', |
| | | 'å¼å¸¸ç±»åèé度é£é©', |
| | | 'æ°æ®è¶
æ çé£é©', |
| | | 'æ°æ®å¨çº¿çé£é©' |
| | | ]" |
| | | :yData="[ |
| | | bill.valid, |
| | | bill.exceptionRecurrence, |
| | | bill.exceptionTypeAggregation, |
| | | bill.exceeding, |
| | | bill.online |
| | | ]" |
| | | ></DustRadarChart> |
| | | <div> |
| | | æéï¼ |
| | | <span |
| | | :class="{ |
| | | 'weightColor-low': weight < 0.2, |
| | | 'weightColor-medium': weight >= 0.2 && weight < 0.6, |
| | | 'weightColor-heigh': weight >= 0.6 |
| | | }" |
| | | >{{ weight }}</span |
| | | > |
| | | </div> |
| | | <div></div> |
| | | </el-card> |
| | | </el-col> |
| | | |
| | | <el-col :xs="24" :sm="24" :md="6" :lg="6" :xl="4"> |
| | | <el-card |
| | | shadow="never" |
| | | style="width: 200px;min-width: 200px;" |
| | | > |
| | | <template #header><span class="title-16">é£é©è¯¦æ
</span></template> |
| | | <el-form > |
| | | <el-card shadow="never" style="width: 200px; min-width: 200px"> |
| | | <template #header> |
| | | <h1 |
| | | :class="{ |
| | | 'weightColor-low': weight < 0.2, |
| | | 'weightColor-medium': weight >= 0.2 && weight < 0.6, |
| | | 'weightColor-heigh': weight >= 0.6 |
| | | }" |
| | | > |
| | | é£é©å¼ï¼{{ weight }} |
| | | </h1> |
| | | </template> |
| | | <template #default> |
| | | <div class="risk-grade"> |
| | | <h1>é£é©ç级ï¼</h1> |
| | | <span v-if="weight >= 0.6"> é«é£é©</span> |
| | | <span v-else-if="weight >= 0.2 && weight < 0.6"> ä¸é£é©</span> |
| | | <span v-else> ä½é£é©</span> |
| | | </div> |
| | | |
| | | <div class="risk-advice"> |
| | | <h1>管æ§å»ºè®®ï¼</h1> |
| | | <span v-if="weight >= 0.6"> |
| | | 建议对该ç«ç¹è¿è¡çº¿ä¸æ§æ³æ£æ¥ï¼ä¸é¡¹æ°æ®å¯¹æ¯</span |
| | | > |
| | | <span v-else-if="weight >= 0.2 && weight < 0.6"> |
| | | 建议å¼å±å¸¸æè¿½è¸ªåæ</span |
| | | > |
| | | <span v-else> 建议å¼å¯¼ä¼ä¸é¿æä¿æ</span> |
| | | </div> |
| | | <div class="grade-instance"> |
| | | <div class="container"> |
| | | <div class="block-color heigh"></div> |
| | | <div>é«é£é©(â¥0.6)</div> |
| | | </div> |
| | | <div class="container"> |
| | | <div class="block-color medium"></div> |
| | | <div>ä¸é£é©(0.2~0.6)</div> |
| | | </div> |
| | | <div class="container"> |
| | | <div class="block-color low"></div> |
| | | <div>ä½é£é©(ï¼0.2)</div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | </el-card> |
| | | </el-col> |
| | | |
| | | <el-col :xs="24" :sm="24" :md="6" :lg="6" :xl="4"> |
| | | <el-card shadow="never" style="width: 200px; min-width: 200px"> |
| | | <template #header |
| | | ><span class="title-16">é£é©è¯¦æ
</span></template |
| | | > |
| | | <el-form> |
| | | <el-form-item label="æå¤§å¼ï¼"> |
| | | {{ bill.max }} mg/m³ |
| | | </el-form-item> |
| | |
| | | {{ bill.exceeding }}% |
| | | </el-form-item> |
| | | <el-form-item label="å¼å¸¸ç±»åèé度ï¼"> |
| | | {{ bill.exceptionTypeAggregation*100 }}% |
| | | {{ bill.exceptionTypeAggregation * 100 }}% |
| | | </el-form-item> |
| | | <el-form-item label="å
¸åå¼å¸¸å¤ç°çï¼" label-width="auto"> |
| | | {{ bill.exceptionRecurrence*100 }}% |
| | | <el-form-item label="å
¸åå¼å¸¸å¤ç°çï¼"> |
| | | {{ bill.exceptionRecurrence * 100 }}% |
| | | </el-form-item> |
| | | </el-form> |
| | | <!-- <div class="date-text">æå¤§å¼:{{ bill.max }} mg/m³</div> --> |
| | | <!-- <div>æå°å¼:{{ bill.min }} mg/m³</div> |
| | | <div>åå¼:{{ bill.avg }} mg/m³</div> |
| | | <div>æ°æ®ææç:{{ bill.online }}%</div> |
| | | <div>æ°æ®å¨çº¿ç:{{ bill.valid }}%</div> |
| | | <div>æ°æ®è¶
æ ç:{{ bill.exceeding }}%</div> |
| | | <div>å¼å¸¸ç±»åèé度:{{ bill.exceptionTypeAggregation*100 }}%</div> |
| | | <div>å
¸åå¼å¸¸å¤ç°ç:{{ bill.exceptionRecurrence*100 }}%</div> --> |
| | | |
| | | </el-card> |
| | | </el-col> |
| | | |
| | | <el-col :xs="24" :sm="24" :md="6" :lg="6" :xl="4"> |
| | | <el-card |
| | | shadow="never" |
| | | |
| | | style="width:200px; min-width: 200px;" |
| | | > |
| | | <template #header> |
| | | <span class="title-16">é£é©ç级</span> |
| | | </template> |
| | | <template #default> |
| | | <!-- <el-space direction="vertical" :size="15" > --> |
| | | <div class="container"> |
| | | <div class="block-color heigh"></div> <div>é«é£é©(â¥0.6)</div> |
| | | </div> |
| | | <div class="container"> |
| | | <div class="block-color medium" ></div> <div>ä¸é£é©(0.2~0.6)</div> |
| | | </div> |
| | | <div class="container"> |
| | | <div class="block-color low"></div><div>ä½é£é©(ï¼0.2)</div> |
| | | </div> |
| | | |
| | | |
| | | |
| | | <!-- </el-space> --> |
| | | </template> |
| | | </el-card> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | |
| | | |
| | | <el-row :gutter="24"> |
| | | <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="6"> |
| | | <el-card |
| | | shadow="never" |
| | | |
| | | > |
| | | <el-card shadow="never"> |
| | | <template #default> |
| | | <LineChart |
| | | title="æ¥åå¼" |
| | |
| | | </el-col> |
| | | |
| | | <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="6"> |
| | | <el-card |
| | | shadow="never" |
| | | |
| | | > |
| | | <el-card shadow="never"> |
| | | <template #default> |
| | | <LineChart |
| | | title="æ¥å¨çº¿ç" |
| | |
| | | </el-col> |
| | | |
| | | <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="6"> |
| | | <el-card shadow="never" |
| | | > |
| | | <el-card shadow="never"> |
| | | <template #default> |
| | | <LineChart |
| | | title="æ¥ææç" |
| | |
| | | </el-col> |
| | | |
| | | <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="6"> |
| | | <el-card shadow="never" > |
| | | <el-card shadow="never"> |
| | | <template #default> |
| | | <LineChart |
| | | title="æ¥è¶
æ ç" |
| | |
| | | </el-card> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | |
| | | |
| | | </el-main> |
| | | </el-container> |
| | | </div> |
| | |
| | | display: flex; |
| | | margin-bottom: 10px; |
| | | } |
| | | .grade-instance { |
| | | margin-top: 40px; |
| | | } |
| | | .block-color { |
| | | width: 1em; |
| | | height: 1em; |
| | |
| | | background-color: red; |
| | | } |
| | | .medium { |
| | | background-color: #FADC19; |
| | | background-color: #fadc19; |
| | | } |
| | | .low { |
| | | background-color: #9FDB1D; |
| | | background-color: #9fdb1d; |
| | | } |
| | | |
| | | .el-text { |
| | | align-self: left; |
| | | } |
| | | .el-form-item { |
| | | margin-bottom: 20px; |
| | | |
| | | margin-bottom: 20px; |
| | | } |
| | | :deep().el-form-item__content { |
| | | justify-content: flex-end; |
| | | |
| | | } |
| | | .title-16 { |
| | | font-size: 16px; |
| | | font-weight: bold; |
| | | } |
| | | .el-row { |
| | | .weightColor-low { |
| | | color: #9fdb1d; |
| | | } |
| | | .weightColor-medium { |
| | | color: #dabe09; |
| | | } |
| | | .weightColor-heigh { |
| | | color: red; |
| | | } |
| | | .risk-grade { |
| | | display: flex; |
| | | margin-bottom: 20px; |
| | | } |
| | | </style> |
| | |
| | | <script> |
| | | import TimeSelectWithShortCuts from '../../sfc/TimeSelectWithShortCuts.vue'; |
| | | // import InputSearch from '../../sfc/InputSearch.vue'; |
| | | import AreaAndmonitorType from '../../sfc/AreaAndmonitorType.vue'; |
| | | import TimeSelectWithShortCuts from '@/sfc/TimeSelectWithShortCuts.vue'; |
| | | import AreaAndmonitorType from '@/sfc/AreaAndmonitorType.vue'; |
| | | import {useCommonFunction} from '../../utils/common.js'; |
| | | import requetsApi from '@/api/exportExcel/requetsApi.js' |
| | | import dayjs from 'dayjs'; |
| | | export default { |
| | | components: { |
| | | TimeSelectWithShortCuts, |
| | | // InputSearch |
| | | AreaAndmonitorType |
| | | }, |
| | | data() { |
| | |
| | | tableData: [], |
| | | isNoData: false, |
| | | loading: false, |
| | | // begin: '2023-05-01', //å¼å§æ¶é´ |
| | | // end: '2023-05-15', //ç»ææ¶é´ |
| | | |
| | | form: { |
| | | // ç«ç¹åç§° |
| | | name: '', |
| | | // 设å¤ç¼å· |
| | | number: '', |
| | | // å¼å§æ¶é´ |
| | | beginTime: '', |
| | | // ç»ææ¶é´ |
| | |
| | | return {cmpp,exportToExcel} |
| | | }, |
| | | |
| | | // watch:{ |
| | | // pageSize(){ |
| | | // this.handleSizeChange() |
| | | // }, |
| | | // currentPage(){ |
| | | // this.handleCurrentChange() |
| | | // }, |
| | | // }, |
| | | |
| | | mounted() { |
| | | this.form.name = ''; |
| | |
| | | <div class="search-container"> |
| | | <el-container> |
| | | <el-main> |
| | | <el-form :inline="true" :model="form" class="demo-form-inline"> |
| | | <el-form :inline="true" :model="form" > |
| | | <el-form-item> |
| | | <AreaAndmonitorType></AreaAndmonitorType> |
| | | </el-form-item> |
| | | <!-- <el-form-item> |
| | | <InputSearch @submit-value="(n) => (form.name = n)"></InputSearch> |
| | | </el-form-item> --> |
| | | |
| | | <el-form-item> |
| | | <TimeSelectWithShortCuts |
| | | @submit-time="giveTime" |
| | |
| | | |
| | | <el-card> |
| | | <el-empty v-show="isNoData" :image-size="200" /> |
| | | <!-- <LineChart :chartData="option"> </LineChart> --> |
| | | </el-card> |
| | | |
| | | <el-table |
| | | :data="tableData" |
| | |
| | | @update:current-page="handleCurrentChange" |
| | | @update:page-size="handleSizeChange" |
| | | /> |
| | | </el-card> |
| | | |
| | | </el-main> |
| | | </el-container> |
| | | </div> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <script> |
| | | import TimeSelectWithShortCuts from '@/sfc/TimeSelectWithShortCuts.vue'; |
| | | import InputSearch from '@/sfc/InputSearch.vue'; |
| | | import AreaAndmonitorType from '@/sfc/AreaAndmonitorType.vue'; |
| | | import exceptionApi from '@/api/exceptionApi.js'; |
| | | import {useCommonFunction} from '../../utils/common.js'; |
| | | import index from '@/utils/risk_estimate_common_function/index.js' |
| | | import dayjs from 'dayjs'; |
| | | export default { |
| | | components: { |
| | | TimeSelectWithShortCuts, |
| | | AreaAndmonitorType, |
| | | InputSearch |
| | | }, |
| | | data() { |
| | | return { |
| | | // å½å页 |
| | | currentPage: 1, |
| | | // æ¯é¡µæ¡æ° |
| | | pageSize: 20, |
| | | total: 0, |
| | | // è¡¨æ ¼æ°æ® |
| | | tableData: [], |
| | | isNoData: false, |
| | | loading: false, |
| | | |
| | | form: { |
| | | // ç«ç¹åç§° |
| | | name: '', |
| | | // å¼å§æ¶é´ |
| | | beginTime: '', |
| | | // ç»ææ¶é´ |
| | | endTime: '' |
| | | }, |
| | | bill: { |
| | | min: '', |
| | | max: '', |
| | | avg: '', |
| | | online: '', |
| | | valid: '', |
| | | exceeding: '', |
| | | |
| | | // å
¸åå¼å¸¸å¤ç°ç |
| | | exceptionRecurrence: '', |
| | | // å¼å¸¸ç±»åæ®èé度 |
| | | exceptionTypeAggregation: '', |
| | | }, |
| | | // { |
| | | // siteName:'', |
| | | // region:'', |
| | | // monitorType:'', |
| | | // riskValue:'', |
| | | // riskGrage:'', |
| | | // riskAdvice:'', |
| | | // beginTime:'', |
| | | // endTime:'', |
| | | // } |
| | | table:[] |
| | | }; |
| | | }, |
| | | setup(){ |
| | | // å¼å
¥ ç¾åå·æ¯è¾å¤§å° 导åºåè½ |
| | | const {exportToExcel} = useCommonFunction() |
| | | return {exportToExcel} |
| | | }, |
| | | |
| | | computed: { |
| | | weight() { |
| | | return ( |
| | | (100 - this.bill.online) * 0.1 + |
| | | (100 - this.bill.valid) * 0.2 + |
| | | this.bill.exceeding * 0.2 + |
| | | this.bill.exceptionTypeAggregation * 0.2 + |
| | | this.bill.exceptionRecurrence * 0.3 |
| | | ).toFixed(2); |
| | | } |
| | | }, |
| | | watch:{ |
| | | weight(){ |
| | | this.table[0].riskValue = this.weight |
| | | } |
| | | }, |
| | | methods: { |
| | | /** |
| | | * å°ä¸å½æ åæ¶é´è½¬ä¸ºæå®æ ¼å¼ |
| | | * @paramï¼ |
| | | * @returnsï¼ |
| | | */ |
| | | giveTime(val) { |
| | | //å°ä¸å½æ åæ¶é´è½¬ä¸ºæå®æ ¼å¼(该ç»ä»¶è¿åçæ åæ¶é´çæ ¼å¼ï¼æä»¥å¿
é¡»çå è¿ä¸ªå½æ°) |
| | | this.form.beginTime = dayjs(val[0]).format('YYYY-MM-DD HH:mm:ss'); |
| | | this.form.endTime = dayjs(val[1]).format('YYYY-MM-DD HH:mm:ss'); |
| | | }, |
| | | // ç¹å»å±ç¤ºæé® |
| | | fetchData() { |
| | | |
| | | let params = {}; |
| | | if (this.form.name) { |
| | | params['siteName'] = this.form.name; |
| | | } |
| | | if (this.form.beginTime) { |
| | | params['beginTime'] = this.form.beginTime; |
| | | } |
| | | if (this.form.endTime) { |
| | | params['endTime'] = this.form.endTime; |
| | | } |
| | | this.loading = true; |
| | | exceptionApi |
| | | .analysisdata(this.form.name, this.form.beginTime, this.form.endTime) |
| | | .then((response) => { |
| | | this.chartData = response.data.data; |
| | | this.loading = false; |
| | | if (response.data.data.length == 0) { |
| | | this.isNoData = true; |
| | | return; |
| | | } |
| | | // ç§»é¤ç©ºæ°æ®ç¶æ |
| | | this.isNoData = false; |
| | | let temp = index.calBillData(this.chartData,this.form.beginTime,this.form.endTime); |
| | | this.bill.min = temp['min']; |
| | | this.bill.max = temp['max']; |
| | | |
| | | this.bill.avg = temp['avg']; |
| | | this.bill.online = temp['online']; |
| | | this.bill.valid = temp['valid']; |
| | | this.bill.exceeding = temp['exceeding']; |
| | | |
| | | this.begin = this.chartData[0].lst; |
| | | this.end = this.chartData[this.chartData.length - 1].lst; |
| | | const tempObj = {} |
| | | tempObj.region = 'éå±±åº' |
| | | tempObj.monitorType = 'æ¬å°' |
| | | tempObj.siteName = this.form.name |
| | | tempObj.beginTime = this.form.beginTime |
| | | tempObj.endTime = this.form.endTime |
| | | |
| | | // this.table[0].region = 'éå±±åº' |
| | | // this.table[0].monitorType = 'æ¬å°' |
| | | // this.table[0].siteName = this.form.name |
| | | // this.table[0].beginTime = this.form.beginTime |
| | | // this.table[0].endTime = this.form.endTime |
| | | |
| | | if(this.weight>=0.6){ |
| | | tempObj.riskGrage = 'é«é£é©' |
| | | tempObj.riskAdvice = '建议对该ç«ç¹è¿è¡çº¿ä¸æ§æ³æ£æ¥ï¼ä¸é¡¹æ°æ®å¯¹æ¯' |
| | | // this.table[0].riskGrage = 'é«é£é©' |
| | | // this.table[0].riskAdvice = '建议对该ç«ç¹è¿è¡çº¿ä¸æ§æ³æ£æ¥ï¼ä¸é¡¹æ°æ®å¯¹æ¯' |
| | | }else if(this.weight<0.6 && this.weight>=0.2){ |
| | | tempObj.riskGrage = 'ä¸é£é©' |
| | | tempObj.riskAdvice = '建议å¼å±å¸¸æè¿½è¸ªåæ' |
| | | // this.table[0].riskGrage = 'ä¸é£é©' |
| | | // this.table[0].riskAdvice = '建议å¼å±å¸¸æè¿½è¸ªåæ' |
| | | }else { |
| | | tempObj.riskGrage = 'ä½é£é©' |
| | | tempObj.riskAdvice = '建议å¼å¯¼ä¼ä¸é¿æä¿æ' |
| | | // this.table[0].riskGrage = 'ä½é£é©' |
| | | // this.table[0].riskAdvice = '建议å¼å¯¼ä¼ä¸é¿æä¿æ' |
| | | } |
| | | this.table.push(tempObj) |
| | | }); |
| | | }, |
| | | |
| | | // ä¼ä¸å¼å¸¸è¯¦æ
|
| | | exceptiondataCount() { |
| | | exceptionApi |
| | | .exceptiondata1({ |
| | | siteName: this.form.name, |
| | | beginTime: this.form.beginTime, |
| | | endTime: this.form.endTime |
| | | }) |
| | | .then((res) => { |
| | | let obj = index.calRecur(res.data.data); |
| | | this.bill.exceptionRecurrence = obj['exceptionRecurrence']; |
| | | this.bill.exceptionTypeAggregation = obj['exceptionTypeAggregation']; |
| | | }); |
| | | }, |
| | | |
| | | /** |
| | | * åå§å è½½å½æ° |
| | | */ |
| | | fetch() { |
| | | // åææ°æ® |
| | | this.fetchData(); |
| | | // å¼å¸¸æ°æ® |
| | | this.exceptiondataCount(); |
| | | }, |
| | | |
| | | /** |
| | | * 导åºä¸ºExcel |
| | | |
| | | */ |
| | | exportData(){ |
| | | if(this.table.length!=0){ |
| | | const tableColumns = ['siteName','region','monitorType','riskValue','riskGrage','riskAdvice','beginTime','endTime'] |
| | | const excelColumns = [['A1','ç«ç¹åç§°'], |
| | | ['B1','åºå'],['C1','çæµç±»å'],['D1','é£é©å¼'], |
| | | ['E1','é£é©ç级'],['F1','ç®¡æ§æªæ½'],['G1','å¼å§æ¥æ'], |
| | | ['H1','ç»ææ¥æ']] |
| | | |
| | | this.exportToExcel(this.table,tableColumns,excelColumns,'综åé£é©æå.xlsx') |
| | | } |
| | | |
| | | }, |
| | | |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <template> |
| | | <el-row> |
| | | <el-row> |
| | | <el-form :inline="true" :model="form"> |
| | | <el-form-item> |
| | | <AreaAndmonitorType></AreaAndmonitorType> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <InputSearch |
| | | isNeedDefaultSite="1" |
| | | @submit-value="(n) => (form.name = n)" |
| | | ></InputSearch> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <TimeSelectWithShortCuts |
| | | @submit-time="giveTime" |
| | | ></TimeSelectWithShortCuts> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" @click="fetch">é£é©æå</el-button> |
| | | <el-button type="warning" @click="exportData">导åº</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </el-row> |
| | | </el-row> |
| | | |
| | | <el-table |
| | | :data="table" |
| | | height="600px" |
| | | style="width: 100%" |
| | | v-loading="loading" |
| | | :cell-class-name="tableCellClassName" |
| | | > |
| | | <el-table-column |
| | | type="index" |
| | | prop="name" |
| | | label="åºå·" |
| | | :index="indexMethod" |
| | | fixed |
| | | show-overflow-tooltip |
| | | /> |
| | | <el-table-column prop="siteName" label="ç«ç¹åç§°" show-overflow-tooltip /> |
| | | <el-table-column prop="region" label="åºå" show-overflow-tooltip /> |
| | | <el-table-column prop="monitorType" label="æ£æµç±»å" show-overflow-tooltip /> |
| | | <el-table-column prop="riskValue" label="é£é©å¼" show-overflow-tooltip /> |
| | | <el-table-column prop="riskGrage" label="é£é©ç级" show-overflow-tooltip /> |
| | | <el-table-column prop="riskAdvice" label="ç®¡æ§æªæ½" show-overflow-tooltip /> |
| | | <el-table-column prop="beginTime" label="å¼å§æ¥æ" show-overflow-tooltip /> |
| | | <el-table-column prop="endTime" label="ç»ææ¥æ" show-overflow-tooltip /> |
| | | </el-table> |
| | | <el-empty v-show="isNoData" :image-size="200" /> |
| | | |
| | | </template> |
| | | |
| | | <style scoped> |
| | | .el-row,.el-table { |
| | | margin: 10px 0px 0px 10px |
| | | } |
| | | .el-table{ |
| | | |
| | | } |
| | | </style> |
| | |
| | | color: ['#ddd', '#aaa'] |
| | | } |
| | | }, |
| | | // shape: 'circle', |
| | | |
| | | indicator: [ |
| | | { name: this.name[0], max: 1 }, |
| | | { name: this.name[1], max: 1 }, |
| | |
| | | { name: this.name[3], max: 1 }, |
| | | { name: this.name[4], max: 1 } |
| | | ], |
| | | // splitArea: { |
| | | // areaStyle: { |
| | | // // color: ['#77EADF', '#26C3BE', '#64AFE9', '#428BD4'], |
| | | // shadowColor: 'rgba(0, 0, 0, 0.2)', |
| | | // shadowBlur: 10 |
| | | // } |
| | | // }, |
| | | |
| | | axisName: { |
| | | color: '#428BD4' |
| | | }, |
| | |
| | | data: [ |
| | | { |
| | | value: [ |
| | | (this.yData[0] / 100).toFixed(4), |
| | | (1 - (this.yData[0] / 100).toFixed(4)), |
| | | this.yData[1], |
| | | this.yData[2], |
| | | (this.yData[3] / 100).toFixed(4), |
| | | (this.yData[4] / 100).toFixed(4) |
| | | (this.yData[3] / 100).toFixed(4), |
| | | 1-((this.yData[4] / 100).toFixed(4)) |
| | | ], |
| | | // value: [ |
| | | // this.yData[0], |
| | |
| | | }, |
| | | |
| | | }, |
| | | beforeUnmount() { |
| | | if (this.chart) { |
| | | this.chart.dispose(); |
| | | } |
| | | }, |
| | | // beforeUnmount() { |
| | | // if (this.chart) { |
| | | // this.chart.dispose(); |
| | | // } |
| | | // }, |
| | | methods: { |
| | | intiChart() { |
| | | // å建echartså®ä¾ |
| | |
| | | placeholder="请è¾å
¥å¯ç " |
| | | type="password" |
| | | size="large" |
| | | show-password |
| | | ></el-input> |
| | | </el-form-item> |
| | | |
| | |
| | | </template> |
| | | |
| | | <script lang="ts"> |
| | | import Cookie from 'js-cookie' |
| | | export default { |
| | | data() { |
| | | return { |
| | |
| | | // ç»å½é»è¾ |
| | | if (this.username === 'admin' && this.password === 'admin123') { |
| | | ElMessage.success('ç»å½æå'); |
| | | const token = 'abc' |
| | | Cookie.set('token',token) |
| | | // ç»å½æåï¼è·³è½¬å°å¯¹åºé¡µé¢ |
| | | this.$router.push('/edata') // å设ç»å½æååè·³è½¬å° '/dashboard' é¡µé¢ |
| | | } else { |
| | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return{ |
| | | |
| | | } |
| | | }, |
| | | mounted() { |
| | | |
| | | }, |
| | | methods: { |
| | | |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <template> |
| | | <div> |
| | | 模æç»å½ |
| | | </div> |
| | | </template> |
| | | |
| | | <style scoped> |
| | | |
| | | </style> |
| | |
| | | <script> |
| | | // import DustRadarChart from '../../sfc/DustRadarChart.vue'; |
| | | // import TimeSelectWithShortCuts from '../../sfc/TimeSelectWithShortCuts.vue' |
| | | import TimeSelectWithShortCuts from '@/sfc/TimeSelectWithShortCuts.vue'; |
| | | import settingApi from '@/api/data_access_setting/settingApi.js' |
| | | import dayjs from 'dayjs'; |
| | | export default { |
| | | components :{ |
| | | // DustRadarChart, |
| | | // TimeSelectWithShortCuts |
| | | components: { |
| | | TimeSelectWithShortCuts, |
| | | |
| | | }, |
| | | data() { |
| | | return{ |
| | | |
| | | // åºå |
| | | radio:0, |
| | | // 宿¶ |
| | | radio1:'', |
| | | beginTime:'', |
| | | endTime:'', |
| | | } |
| | | }, |
| | | mounted() { |
| | | |
| | | }, |
| | | methods: { |
| | | |
| | | giveTime(val) { |
| | | //å°ä¸å½æ åæ¶é´è½¬ä¸ºæå®æ ¼å¼(该ç»ä»¶è¿åçæ åæ¶é´çæ ¼å¼ï¼æä»¥å¿
é¡»çå è¿ä¸ªå½æ°) |
| | | this.beginTime = dayjs(val[0]).format('YYYY-MM-DD HH:mm:ss'); |
| | | this.endTime = dayjs(val[1]).format('YYYY-MM-DD HH:mm:ss'); |
| | | }, |
| | | set(){ |
| | | const params = {} |
| | | params.user = 'admin' |
| | | params.beginTime = this.beginTime |
| | | params.endTime = this.endTime |
| | | params.region = 'éå±±' |
| | | params.isRegularTime = this.radio1 |
| | | settingApi.submitSetting(params).then(res => { |
| | | if(res.data.code == 1){ |
| | | ElMessage.success('设置æå') |
| | | }else{ |
| | | ElMessage('设置失败') |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <template> |
| | | <div> |
| | | æ°æ®æ¥å
¥é
ç½® |
| | | </div> |
| | | <div>çæé
ç½®æä»¶</div> |
| | | <el-form> |
| | | <el-form-item label="åºå"> |
| | | <el-radio-group v-model="radio"> |
| | | <el-radio :label="0">éå±±</el-radio> |
| | | <!-- <el-radio :label="6">Option B</el-radio> |
| | | <el-radio :label="9">Option C</el-radio> --> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="éæ©èµ·å§æ¶é´"> |
| | | <TimeSelectWithShortCuts @submit-time="giveTime"></TimeSelectWithShortCuts> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="æ¯å¦å®æ¶"> |
| | | <el-radio-group v-model="radio1" > |
| | | <el-radio label="1" size="large">æ¯</el-radio> |
| | | <el-radio label="2" size="large">å¦</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | |
| | | <el-form-item> <el-button @click="set">设置</el-button></el-form-item> |
| | | </el-form> |
| | | </template> |
| | | |
| | | <style scoped> |