src/api/index.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/api/statistic/statisticApi.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/router/index.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/utils/common.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/risk_assessment/DataIndexRank.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/risk_assessment/components/SiteDetail.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/api/index.js
@@ -1,27 +1,25 @@ import axios from 'axios'; import { setInterceptors } from './config'; import axios from 'axios' import { setInterceptors } from './config' // const url = 'http://localhost:8081/'; // é¨ç½² const url = 'http://114.215.109.124:8803/'; // const url = 'http://192.168.1.8:8081/'; // const url = 'http://192.168.0.123:8081/' //é£ç¾½ç管 const $http = axios.create({ baseURL: url, timeout: 10000 }); }) /* Pythonåå° */ const url_py = 'http://127.0.0.1:8089/' const $http_py = axios.create({ baseURL: url_py, timeout: 10000 }); }) //æ·»å æ¦æªå¨ setInterceptors($http,$http_py); setInterceptors($http, $http_py) export { $http,$http_py,url}; export { $http, $http_py, url } src/api/statistic/statisticApi.js
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,27 @@ import { $http } from '@/api/index.js' export default { /** * æç §èªå®ä¹æåºè·åæ¥ç»è®¡æ°æ® */ fetchDayStatisticByOrder({ page, pageSize, siteName = '', beginTime = null, endTime = null, orderProp, asc = true }) { let params = { page: page, pageSize: pageSize, siteName: siteName, beginTime: beginTime, endTime: endTime, orderProp: orderProp, asc: asc } return $http.get('/dust/analysistime', { params: params }) } } src/router/index.js
@@ -79,14 +79,6 @@ component: () => import('@/views/setting/SetConfiguration.vue') }, // é£é©æ¨¡ååµå ¥è¿æ¸¡é¡µé¢ { path: '/detail/:siteName/:month/:titleName', name: 'RiskModelDetail', meta: { title: 'ç«ç¹å ·ä½ä¿¡æ¯', transition: 'slide-left' }, component: () => import('@/views/risk_assessment/components/SiteDetail.vue') }, // é£é©æ¨¡ååµå ¥ { path: '/subRiskModel', src/utils/common.js
@@ -1,4 +1,6 @@ import * as XLSX from 'xlsx/xlsx.mjs'; import * as XLSX from 'xlsx/xlsx.mjs' import dayjs from 'dayjs' export function useCommonFunction(){ /** * descriptionï¼å¤æèµ·å§æ¶é´è·¨åº¦æ¯å¦è¶ è¿1个æ @@ -10,28 +12,25 @@ function isExceedOneMonth(dateStr1, dateStr2) { // è¶ è¿ä¸ä¸ªæï¼è¿åTrueï¼å¦åè¿åFalse // å°æ¥æåç¬¦ä¸²è½¬ä¸ºæ¥æå¯¹è±¡ const date1 = new Date(dateStr1); const date2 = new Date(dateStr2); const date1 = new Date(dateStr1) const date2 = new Date(dateStr2) // è·åä¸¤ä¸ªæ¥æçå¹´ãæãæ¥ const year1 = date1.getFullYear(); const month1 = date1.getMonth(); const day1 = date1.getDate(); const year1 = date1.getFullYear() const month1 = date1.getMonth() const day1 = date1.getDate() const year2 = date2.getFullYear(); const month2 = date2.getMonth(); const day2 = date2.getDate(); const year2 = date2.getFullYear() const month2 = date2.getMonth() const day2 = date2.getDate() // å¤æä¸¤ä¸ªæ¥ææ¯å¦ç¸å·®ä¸ä¸ªæ if (year1 === year2) { // 年份ç¸çï¼æ¯è¾æä»½å·®å¼ if (Math.abs(month1 - month2) === 1) { // æä»½å·®å¼ä¸º1ï¼è¿éè¦å¤æå ·ä½æ¥æ if ( (month1 < month2 && day1 < day2) || (month1 > month2 && day1 > day2) ) { return true; if ((month1 < month2 && day1 < day2) || (month1 > month2 && day1 > day2)) { return true } } } else if (Math.abs(year1 - year2) === 1) { @@ -40,12 +39,12 @@ (year1 < year2 && month1 === 11 && month2 === 0 && day1 < day2) || (year1 > year2 && month1 === 0 && month2 === 11 && day1 > day2) ) { return true; return true } } // é»è®¤è¿åfalseï¼è¡¨ç¤ºä¸¤ä¸ªæ¥æå符串ä¸ç¸å·®ä¸ä¸ªæ return false; return false } /** @@ -54,7 +53,7 @@ * @returnsï¼å¤§äºï¼åè¿åtrueãå¦åè¿åfalse */ function cmpp(a, b) { return Number(a.replace('%', '')) >= Number(b.replace('%', '')); return Number(a.replace('%', '')) >= Number(b.replace('%', '')) } /** @@ -64,25 +63,24 @@ */ function exportToExcel(exportData,tableColumns,excelColumnsName,excelName='data.xlsx'){ const itemsFormatted = exportData.map((item) => { const newItem = {}; const newItem = {} tableColumns.forEach((col) => { newItem[col] = item[col]; }); return newItem; }); newItem[col] = item[col] }) return newItem }) // å建xlsx对象 const xls = XLSX.utils.json_to_sheet(itemsFormatted); const xls = XLSX.utils.json_to_sheet(itemsFormatted) // ç¼è¾è¡¨å¤´è¡ ä¿®æ¹è¡¨å¤´ excelColumnsName.forEach(item =>{ excelColumnsName.forEach((item) => { xls[item[0]].v = item[1] }) // å建workbookï¼å¹¶æsheetæ·»å è¿å» const wb = XLSX.utils.book_new(); XLSX.utils.book_append_sheet(wb, xls, 'Sheet1'); const wb = XLSX.utils.book_new() XLSX.utils.book_append_sheet(wb, xls, 'Sheet1') // å°workbook转为äºè¿å¶xlsxæä»¶å¹¶ä¸è½½ XLSX.writeFile(wb, excelName); XLSX.writeFile(wb, excelName) } /** @@ -92,22 +90,30 @@ * @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 = []; let time = [] if (begin == end) { time.push(begin); return time; time.push(begin) return time } time.push(begin); let temp = dayjs(begin).add(15, 'minute').format('YYYY-MM-DD HH:mm:ss'); 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) temp = dayjs(temp).add(15, 'minute').format('YYYY-MM-DD HH:mm:ss') } // å ä¸å¼å¸¸çç»ææ¶é´ time.push(temp); return time; time.push(temp) return time } return {isExceedOneMonth,cmpp,exportToExcel,descFiftyTime} /** * æ ¼å¼å为ç¾åå· * @param {*} v * @returns */ function percentFormatter(v) { return v * 100 + '%' } return { isExceedOneMonth, cmpp, exportToExcel, descFiftyTime, percentFormatter } } src/views/risk_assessment/DataIndexRank.vue
@@ -3,6 +3,7 @@ import AreaAndmonitorType from '@/sfc/AreaAndmonitorType.vue' import { useCommonFunction } from '../../utils/common.js' import requetsApi from '@/api/exportExcel/requetsApi.js' import statisticApi from '@/api/statistic/statisticApi.js' import dayjs from 'dayjs' import ButtonExportExcel from '@/sfc/ButtonExportExcel.vue' import ButtonClick from '@/sfc/ButtonClick.vue' @@ -40,8 +41,8 @@ }, setup() { // å¼å ¥ ç¾åå·æ¯è¾å¤§å° 导åºåè½ const { cmpp, exportToExcel } = useCommonFunction() return { cmpp, exportToExcel } const { cmpp, exportToExcel, percentFormatter } = useCommonFunction() return { cmpp, exportToExcel, percentFormatter } }, mounted() { @@ -97,12 +98,12 @@ // å¨çº¿çï¼ææç 䏿»¡è¶³æ åæ¶ åé¢è² if (columnIndex == 7) { if (!this.cmpp(row.dayOnline, '90%')) { if (row.dayOnline < 0.9) { return 'red-color' } } if (columnIndex == 8) { if (!this.cmpp(row.dayValid, '90%')) { if (row.dayValid < 0.9) { return 'red-color' } } @@ -111,9 +112,9 @@ // åè½ï¼è¡¨æ ¼é«åº¦æ ¹æ®å 容èªéåº calTableHeight() { const h1 = this.$refs.h1.$el.offsetHeight const h2 = this.$refs.h2.$el.offsetHeight; const h2 = this.$refs.h2.$el.offsetHeight // å ¶ä¸ä¸ä¸ª40æ¯çåçæ»å¤è¾¹è· this.tableHeight = `calc(100vh - ${h1}px - ${h2}px - 40px - 120px - var(--el-main-padding) * 2`; this.tableHeight = `calc(100vh - ${h1}px - ${h2}px - 40px - 120px - var(--el-main-padding) * 2` }, // 页大尿¹åæ¶è§¦å handleSizeChange(val) { @@ -143,21 +144,27 @@ }, // ç¹å»ç»è®¡æé® fetchData() { let params = {} params['page'] = this.currentPage params['pageSize'] = this.pageSize params['siteName'] = '' fetchData(p) { const { prop, order } = p ? p : { prop: 'dayAvg', order: 'descending' } let params = { page: this.currentPage, pageSize: this.pageSize, siteName: '', orderProp: prop, //æåº ascending æ£åºï¼descending éåº asc: order == 'ascending' } if (this.form.beginTime) { params['beginTime'] = this.form.beginTime } if (this.form.endTime) { params['endTime'] = this.form.endTime } this.loading = true this.queryButton = true this.isNoData = false this.$http.get('/dust/analysistime', { params: params }).then((response) => { statisticApi.fetchDayStatisticByOrder(params).then((response) => { this.tableData = response.data.data.rows this.loading = false this.queryButton = false @@ -171,9 +178,8 @@ }) }, openDetail(row) { const encodedSiteName = encodeURIComponent(row.siteName) let titleName = 'ç«ç¹é£é©æ°æ®è¯¦æ ' this.$router.push(`/detail/${encodedSiteName}/${this.form.month}/${titleName}`) const encodedSiteName = encodeURIComponent(row.name) this.$router.push(`/exceptionDetail/${encodedSiteName}/${row.lst}`) } } } @@ -184,11 +190,9 @@ <el-form-item> <AreaAndmonitorType></AreaAndmonitorType> </el-form-item> <el-form-item> <TimeShortCuts timeType="currentMonth" @submit-time="giveTime"></TimeShortCuts> </el-form-item> <el-form-item> <ButtonClick style="margin-right: 12px" @@ -205,7 +209,6 @@ ></ButtonExportExcel> </el-form-item> </el-form> <el-card v-show="!isNoData"> <el-table :data="tableData" @@ -213,6 +216,7 @@ style="width: 100%" v-loading="loading" :cell-class-name="tableCellClassName" @sort-change="fetchData" > <el-table-column type="index" @@ -225,24 +229,30 @@ <el-table-column prop="name" label="ç¹ä½åç§°" show-overflow-tooltip width="300"> <template #default="{ row }"> <el-button type="primary" text @click="openDetail(row)"> <span class="rank-site">{{row.name }}</span></el-button> <span class="rank-site">{{ row.name }}</span></el-button > </template> </el-table-column> <el-table-column prop="mnCode" label="设å¤ç¼ç " show-overflow-tooltip /> <el-table-column prop="lst" label="çæµæ¥æ" sortable show-overflow-tooltip /> <el-table-column prop="dayAvg" label="æ¥å¹³åå¼" sortable show-overflow-tooltip /> <el-table-column prop="min" label="æ¥æå°å¼" sortable show-overflow-tooltip /> <el-table-column prop="max" label="æ¥æå¤§å¼" sortable show-overflow-tooltip /> <el-table-column prop="dayOnline" label="æ¥å¨çº¿ç" sortable show-overflow-tooltip /> <el-table-column prop="dayValid" label="æ¥ææç" sortable show-overflow-tooltip /> <el-table-column prop="dayExceeding" label="æ¥è¶ æ ç" sortable show-overflow-tooltip /> <el-table-column prop="lst" label="çæµæ¥æ" sortable="custom" show-overflow-tooltip /> <el-table-column prop="dayAvg" label="æ¥å¹³åå¼" sortable="custom" show-overflow-tooltip /> <el-table-column prop="min" label="æ¥æå°å¼" sortable="custom" show-overflow-tooltip /> <el-table-column prop="max" label="æ¥æå¤§å¼" sortable="custom" show-overflow-tooltip /> <el-table-column prop="dayOnline" label="æ¥å¨çº¿ç" sortable="custom" show-overflow-tooltip> <template #default="{ row }"> {{ percentFormatter(row.dayOnline) }} </template> </el-table-column> <el-table-column prop="dayValid" label="æ¥ææç" sortable="custom" show-overflow-tooltip> <template #default="{ row }"> {{ percentFormatter(row.dayValid) }} </template> </el-table-column> <el-table-column prop="dayExceeding" label="æ¥è¶ æ ç" sortable="custom" show-overflow-tooltip> <template #default="{ row }"> {{ percentFormatter(row.dayExceeding) }} </template> </el-table-column> </el-table> <el-pagination src/views/risk_assessment/components/SiteDetail.vue
@@ -10,8 +10,6 @@ return { siteName: '', month: '', // 页æ é¢ title:'' } }, watch: {},