import Layout from '@/layout'
|
import router from '@/router/index'
|
import store from '@/store'
|
|
// 映射文件
|
const staffManagement = {
|
path: 'personnel',
|
name: 'personnel',
|
component: () => import('@/views/personnel/index'),
|
meta: { title: '员工列表', icon: 'example' }
|
}
|
// 监测因子特效
|
const wind = {
|
path: 'showSensor/wind',
|
name: 'Main',
|
component: () => import('@/views/main/index'),
|
meta: { title: '实时风场图', icon: 'example' }
|
}
|
|
const car = {
|
path: 'showSensor/car',
|
name: 'car',
|
component: () => import('@/views/car/index'),
|
meta: { title: '道路尘负荷分析', icon: 'example' }
|
}
|
|
const UAV = {
|
path: 'showSensor/uav',
|
name: 'uav',
|
component: () => import('@/views/UVA/index'),
|
meta: { title: '无人机轨迹', icon: 'example' }
|
}
|
|
const heatmap = {
|
path: 'showSensor/heatmap',
|
name: 'heatmap',
|
component: () => import('@/views/heatmap/index'),
|
meta: { title: '污染扩散图', icon: 'example' }
|
}
|
const hexagon = {
|
path: 'showSensor/hexagon',
|
name: 'hexagon',
|
component: () => import('@/views/hexagon/index'),
|
meta: { title: '污染蜂窝图', icon: 'example' }
|
}
|
|
// 监测因子图表
|
const tend = {
|
path: 'charts/tend',
|
name: 'tend',
|
component: () => import('@/views/charts/index'),
|
meta: { title: '监测因子趋势', icon: 'example' }
|
}
|
|
const contrast = {
|
path: 'charts/contrast',
|
name: 'contrast',
|
component: () => import('@/views/contrast/index'),
|
meta: { title: '监测因子相关性对比', icon: 'example' }
|
}
|
|
const averageContrast = {
|
path: 'charts/averageContrast',
|
name: 'averageContrast',
|
component: () => import('@/views/averageContrast/index'),
|
meta: { title: '监测因子均值对比', icon: 'example' }
|
}
|
|
const O3 = {
|
path: 'charts/O3',
|
name: 'O3',
|
component: () => import('@/views/O3/index'),
|
meta: { title: '臭氧预测', icon: 'example' }
|
}
|
|
const airPollutionCalendar = {
|
path: 'charts/airPollutionCalendar',
|
name: 'airPollutionCalendar',
|
component: () => import('@/views/airPollutionCalendar/index'),
|
meta: { title: '空气质量污染日历', icon: 'example' }
|
}
|
const heatMap = {
|
path: 'charts/heatMap',
|
name: 'heatMap',
|
component: () => import('@/views/hotMap/index'),
|
meta: { title: '区域热力图', icon: 'example' }
|
}
|
|
// const PM5PM10ForecastChart = {
|
// path: 'charts/PM5PM10ForecastChart',
|
// name: 'PM5PM10ForecastChart',
|
// component: () => import('@/views/PM5PM10ForecastChart/index'),
|
// meta: { title: 'PM5PM10预测图', icon: 'example' }
|
// }
|
|
// 报表管理
|
const showMpData = {
|
path: 'report/showMpData',
|
name: 'showMpData',
|
component: () => import('@/views/reportForm/index'),
|
meta: { title: '监测站数据显示', icon: 'example' }
|
}
|
|
const showGovHourData = {
|
path: 'report/showGovHourData',
|
name: 'showGovHourData',
|
component: () => import('@/views/govReport/index'),
|
meta: { title: '国控站小时报表显示', icon: 'example' }
|
}
|
const hand = {
|
path: 'report/hand',
|
name: 'hand',
|
component: () => import('@/views/hand/index'),
|
meta: { title: '手持设备', icon: 'example' }
|
}
|
const statement = {
|
path: 'report/statement',
|
name: 'statement',
|
component: () => import('@/views/statement/index'),
|
meta: { title: '空气质量日报表显示', icon: 'example' }
|
}
|
// 空气质量小时播报
|
const airQualityReportDisplay = {
|
path: 'report/airQualityReportDisplay',
|
name: 'airQualityReportDisplay',
|
component: () => import('@/views/airQualityReportDisplay/index'),
|
meta: { title: '空气质量小时播报', icon: 'example' }
|
}
|
const Monitoringstation = {
|
path: 'report/Monitoringstation',
|
name: 'Monitoringstation',
|
component: () => import('@/views/Monitoringstation/index'),
|
meta: { title: '监测站点数据', icon: 'example' }
|
}
|
const Listdata = {
|
path: 'report/Listdata',
|
name: 'Listdata',
|
component: () => import('@/views/Listdata/index'),
|
meta: { title: '列表数据导出', icon: 'example' }
|
}
|
|
// const Equipment = {
|
// path: 'report/Equipment',
|
// name: 'Equipment',
|
// component: () => import('@/views/Equipment/index'),
|
// meta: { title: '设备数据', icon: 'example' }
|
// }
|
// const Equidata = {
|
// path: 'report/Equidata',
|
// name: 'Equidata',
|
// component: () => import('@/views/Equidata/index'),
|
// meta: { title: '设备数据导出', icon: 'example' }
|
// }
|
// 综合分析
|
// 城市空气质量排行
|
const cityAirRank = {
|
path: 'analyse/cityAirRank',
|
name: 'cityAirRank',
|
component: () => import('@/views/cityAirRank/index'),
|
meta: { title: '城市空气质量排名', icon: 'example' }
|
}
|
// 城市空气质量同期对比
|
const cityAirYoyContrast = {
|
path: 'analyse/cityAirYoyContrast',
|
name: 'cityAirYoyContrast',
|
component: () => import('@/views/cityAirRank/cityAirYoyContrast'),
|
meta: { title: '城市空气质量同期对比', icon: 'example' }
|
}
|
|
const levelStatistic = {
|
path: 'analyse/levelStatistic',
|
name: 'levelStatistic',
|
component: () => import('@/views/levelStatistic/index'),
|
meta: { title: '城市优良天统计', icon: 'example' }
|
}
|
const onlineRate = {
|
path: 'analyse/onlineRate',
|
name: 'onlineRate',
|
component: () => import('@/views/onlineRate/index'),
|
meta: { title: '断线统计', icon: 'example' }
|
}
|
|
const industryContributionRate = {
|
path: 'analyse/industryContributionRate',
|
name: 'industryContributionRate',
|
component: () => import('@/views/industryContributionRate/index'),
|
meta: { title: '行业贡献率', icon: 'example' }
|
}
|
const regionalContributionRate = {
|
path: 'analyse/regionalContributionRate',
|
name: 'regionalContributionRate',
|
component: () => import('@/views/regionalContributionRate/index'),
|
meta: { title: '区域贡献率', icon: 'example' }
|
}
|
|
const surveyReport = {
|
path: 'analyse/surveyReport',
|
name: 'surveyReport',
|
component: () => import('@/views/surveyReport/index'),
|
meta: { title: '现场勘察报告', icon: 'example' }
|
}
|
|
const sectionReport = {
|
path: 'analyse/sectionReport',
|
name: 'sectionReport',
|
component: () => import('@/views/sectionReport/index'),
|
meta: { title: '道路尘负荷走航报告', icon: 'example' }
|
}
|
// analyse/air
|
const air = {
|
path: 'analyse/air',
|
name: 'air',
|
component: () => import('@/views/air/index'),
|
meta: { title: '空气质量报告', icon: 'example' }
|
}
|
// analyse/dailyreport
|
const dailyreport = {
|
path: 'analyse/dailyreport',
|
name: 'dailyreport',
|
component: () => import('@/views/dailyreport/index'),
|
meta: { title: '走航监测日报', icon: 'example' }
|
}
|
// 业务交办
|
const summaryPage = {
|
path: 'toCarryOutLegislativeReforms/summaryPage',
|
name: 'summaryPage',
|
component: () =>
|
import('@/views/toCarryOutLegislativeReforms/summaryPage/index'),
|
meta: { title: '业务汇总', icon: 'example' }
|
}
|
const reform = {
|
path: 'toCarryOutLegislativeReforms/reform',
|
name: 'reform',
|
component: () => import('@/views/toCarryOutLegislativeReforms/reform/index'),
|
meta: { title: '立行立改', icon: 'example' }
|
}
|
const delay = {
|
path: 'toCarryOutLegislativeReforms/delay',
|
name: 'delay',
|
component: () => import('@/views/toCarryOutLegislativeReforms/delay/index'),
|
meta: { title: '延期申请', icon: 'example' }
|
}
|
|
// 映射路由,存入对象
|
const ruleMapping = {
|
wind: wind,
|
car: car,
|
UAV: UAV,
|
tend: tend,
|
contrast: contrast,
|
O3: O3,
|
showMpData: showMpData,
|
staffManagement: staffManagement,
|
showGovHourData: showGovHourData,
|
hand: hand,
|
statement: statement,
|
cityAirRank: cityAirRank,
|
levelStatistic: levelStatistic,
|
onlineRate: onlineRate,
|
heatmap: heatmap,
|
hexagon: hexagon,
|
airPollutionCalendar: airPollutionCalendar,
|
heatMap: heatMap,
|
averageContrast: averageContrast,
|
industryContributionRate,
|
regionalContributionRate,
|
cityAirYoyContrast: cityAirYoyContrast,
|
surveyReport,
|
air,
|
airQualityReportDisplay,
|
Monitoringstation,
|
// Equipment,
|
dailyreport,
|
sectionReport,
|
Listdata,
|
summaryPage,
|
reform,
|
delay
|
// Equidata
|
}
|
|
// 网络请求,第一次登陆只有4个路由,所以要添加路由,页面刷新的时候,判断大于4个路由,就不会重新添加。
|
export function getMenus() {
|
if (router.options.routes.length === 4) {
|
store.dispatch('user/getInfo').then(() => {
|
routerMenus()
|
})
|
}
|
}
|
|
// 导出路由菜单
|
export function routerMenus() {
|
console.log('user.menus', JSON.parse(store.state.user.menus))
|
const routersMenu = JSON.parse(store.state.user.menus)
|
// 路由分两块,左侧列表, 最右侧员工下拉菜单
|
console.log('routersMenu', routersMenu)
|
let currentRoutes = []
|
currentRoutes = router.options.routes
|
if (routersMenu.length > 0) {
|
routersMenu.forEach(item => {
|
if (item.url === 'dropDown') {
|
const child = item.children
|
item.component = Layout
|
item.path = '/' + item.url
|
delete item.url
|
delete item.id
|
delete item.children
|
delete item.label
|
delete item.icon
|
item.hidden = true
|
item.children = []
|
currentRoutes.splice(currentRoutes.length, 0, item)
|
child.forEach(item1 => {
|
const mapUrl = item1.url.substr(item.path.length, item1.url.length)
|
const temp = ruleMapping[mapUrl]
|
if (temp !== undefined) {
|
currentRoutes[currentRoutes.length - 1].children.push(temp)
|
} else {
|
console.log('存在菜单配置给该用户,但是代码中无该组件1')
|
}
|
})
|
} else {
|
const child = item.children
|
item.component = Layout
|
item.meta = {
|
title: item.label,
|
icon: 'form'
|
}
|
item.path = '/' + item.url
|
delete item.url
|
delete item.id
|
delete item.children
|
delete item.label
|
delete item.icon
|
item.children = []
|
currentRoutes.splice(currentRoutes.length, 0, item)
|
child.forEach(item1 => {
|
const mapUrl = item1.url.substr(item.path.length, item1.url.length)
|
const temp = ruleMapping[mapUrl]
|
if (temp !== undefined) {
|
currentRoutes[currentRoutes.length - 1].children.push(temp)
|
} else {
|
console.log('存在菜单配置给该用户,但是代码中无该组件')
|
}
|
})
|
}
|
})
|
} else {
|
// console.log(666)
|
// const notFound = {
|
// path: '*',
|
// component: () => import('@/views/login/index')
|
// }
|
// currentRoutes.splice(currentRoutes.length, 0, notFound)
|
}
|
console.log('currentRoutes', currentRoutes)
|
const uniqueRoutes = removeDuplicateRoutes(currentRoutes)
|
console.log('uniqueRoutes', uniqueRoutes)
|
router.addRoutes(uniqueRoutes)
|
}
|
function removeDuplicateRoutes(routes) {
|
const routeNames = new Set()
|
return routes.filter(route => {
|
if (routeNames.has(route.path)) {
|
return false // 如果名称已存在,则过滤掉这条路由
|
}
|
routeNames.add(route.path) // 添加名称到集合中
|
return true
|
})
|
}
|