Pārlūkot izejas kodu

发电能力分析报告

chenminghua 1 gadu atpakaļ
vecāks
revīzija
e470c040b9

+ 7 - 3
src/api/config.js

@@ -1,8 +1,12 @@
 const config = {
-    baseURL: 'http://120.46.148.180:9002',
-    socketURL: 'ws://120.46.148.180:9002'
+    // baseURL: 'http://120.46.148.180:9002',
+    // socketURL: 'ws://120.46.148.180:9002'
+    // baseURL: 'http://192.168.1.67:9002',
+    // socketURL: 'ws://192.168.1.67:9002'
+    baseURL: 'http://192.168.10.7:9002',
+    socketURL: 'ws://192.168.10.7:9002'
 }
 
 export default config;
 export const baseURL = config.baseURL
-export const socketURL = config.socketURL
+export const socketURL = config.socketURL  

+ 6 - 3
src/components/tree.vue

@@ -5,8 +5,8 @@
 		overflowY: 'hidden'
 	}">
 		<el-input class="pb-[10px]" v-model="filterText" placeholder="输入关键字过滤" @input="funfilterChange" />
-		<el-tree ref="treeRef" :style="{height: `calc(${props.height} - 46px)`, overflow: 'auto'}" icon="" :data="props.data" :show-checkbox="props.showCheckbox" default-expand-all node-key="id"
-			highlight-current :props="defaultProps" :current-node-key="''" @check="funCheckChange"
+		<el-tree ref="treeRef" :style="{height: `calc(${props.height} - 46px)`, overflow: 'auto'}" icon="" :data="props.data" :show-checkbox="props.showCheckbox" node-key="id"
+			highlight-current :props="defaultProps" :current-node-key="''" @check="funCheckChange" :default-expanded-keys="[1,100,10000]"
 			:expand-on-click-node="false" @node-click="funCurrentChange" :filter-node-method="funTreeFilter">
 			<template #default="{ node, data }">
 				<p v-if="node.level === 1" class="flex justify-between items-center text-[12px]"
@@ -168,11 +168,13 @@ const funCommand = async ({ type, data, node }) => {
 				cancelButtonText: "取消",
 				type: "warning",
 			}).then(async () => {
+				let dataType = ""; //数据准备、数据预处理、数据拟合
 				let deleteArr = [];
 				const repeatArr = (arr, deleteArr) => {
 					for (const unit of arr) {
 						if (unit.childs?.length) {
 							deleteArr.push(...unit.childs.map((o) => props.type==='wind'? o.id : o.path));
+							dataType = unit.childs[0].type;
 						} else if (unit.children?.length) {
 							repeatArr(unit.children, deleteArr);
 						}
@@ -180,13 +182,14 @@ const funCommand = async ({ type, data, node }) => {
 				};
 				if (data.childs?.length) {
 					deleteArr = data.childs.map((o) => props.type==='wind'? o.id : o.path);
+					dataType = data.childs[0].type;
 				} else if (data.children?.length) {
 					repeatArr(data.children, deleteArr);
 				}
 				let res = {code: 500}
 				if(props.type==='wind'){
 					res = await request.get("/data/option/delete", {
-						params: { ids: deleteArr.join(",") },
+						params: { ids: deleteArr.join(","), type: dataType },
 					}); //删除当前节点
 				}else{
 					res = await request.delete("/delete/files", {

+ 4 - 4
src/pages/dataAnalysis/lineAnalysis/index.vue

@@ -420,7 +420,7 @@ const poweryAxis = ref({
 })
 const countyAxis = ref({
 	type: 'value',
-	name: '次',
+	name: '次',
 	splitLine: {
 		show: false
 	},
@@ -435,7 +435,7 @@ const powerSeries = ref([{
 	markLine: {}
 }])
 const countSeries = ref([{
-	name: '次',
+	name: '次',
 	type: 'bar',
 	data: [],
 	markLine: {}
@@ -465,7 +465,7 @@ const funPower = async () => {
 			]
 			countSeries.value = [
 				{
-				name: "次",
+				name: "次",
 				type: "bar",
 				data: [],
 				markLine: {}
@@ -620,7 +620,7 @@ onActivated(() => {
       <el-row :gutter="10">
         <el-col :span="5">
           <tree-cop
-						ref="treeCopRef" 
+			ref="treeCopRef" 
             :data="treeData"
             @checkChange="funTreeCheckChange"
             :show-checkbox="true"

+ 30 - 30
src/pages/dataAnalysis/spaceAnalysis/components/barChart.vue

@@ -56,8 +56,8 @@ const option = computed({
 	get() {
 		return {
 			color:[
-				"rgb(50,93,171)",
-				"#0098d980",
+				"rgb(54,90,176)",
+				"rgb(54,90,176)",
 				"#626c91",
 				"#a0a7e6",
 				"#c4ebad",
@@ -72,18 +72,18 @@ const option = computed({
 			xAxis: props.xAxis || {},
 			yAxis: props.yAxis || {},
 			brush: {
-          seriesIndex: [1],
-          yAxisIndex: 0,
-          transformable: true,
-          throttleType: "debounce",
-          throttleDelay: 1000,
-          removeOnClick: true,
-          brushType: props.brush? "polygon" : false,
-          brushMode: "multiple",
-          brushStyle: {
-            borderWidth: 1,
-            borderColor: "#ff2424",
-          },
+				seriesIndex: [1],
+				yAxisIndex: 0,
+				transformable: true,
+				throttleType: "debounce",
+				throttleDelay: 1000,
+				removeOnClick: true,
+				brushType: props.brush? "polygon" : false,
+				brushMode: "multiple",
+				brushStyle: {
+				borderWidth: 1,
+				borderColor: "#ff2424",
+          	},
         },
 			toolbox:{
 				show: props.brush,
@@ -106,22 +106,22 @@ const option = computed({
 				bottom: 40,
 			},
 			dataZoom: [
-          {
-            type: "inside", //图表下方的伸缩条
-            show: false, //是否显示
-            realtime: true, //拖动时,是否实时更新系列的视图
-            start: 0, //伸缩条开始位置(1-100),可以随时更改
-            end: 100, //伸缩条结束位置(1-100),可以随时更改
-          },
-          {
-            type: "slider", //图表下方的伸缩条
-            show: false, //是否显示
-            realtime: true, //拖动时,是否实时更新系列的视图
-            start: 0, //伸缩条开始位置(1-100),可以随时更改
-            end: 100, //伸缩条结束位置(1-100),可以随时更改
-          },
-        ],
-		}
+				{
+					type: "inside", //图表下方的伸缩条
+					show: false, //是否显示
+					realtime: true, //拖动时,是否实时更新系列的视图
+					start: 0, //伸缩条开始位置(1-100),可以随时更改
+					end: 100, //伸缩条结束位置(1-100),可以随时更改
+				},
+				{
+					type: "slider", //图表下方的伸缩条
+					show: false, //是否显示
+					realtime: true, //拖动时,是否实时更新系列的视图
+					start: 0, //伸缩条开始位置(1-100),可以随时更改
+					end: 100, //伸缩条结束位置(1-100),可以随时更改
+				},
+       	   ],
+		}  
 	},
 	set(val) { }
 })

+ 61 - 36
src/pages/dataAnalysis/spaceAnalysis/index.vue

@@ -16,25 +16,29 @@ const tableHeight = ref(window.innerHeight - 150 + 'px')
 /**excel 开始 */
 const excelCheckIds = ref([])
 const excelList = ref([])
+const excelCheckboxShow = ref(false)
 /** 额定功率 */
 const powerproduction = ref("")
 //点击excel项时
 const funExcelChange = async (obj) => { 
-	excelCheckIds.value = [obj.id] //当为单选展示风机图表时
-	chartExcelList.value = excelList.value.map(o=> {
-		return {
-			...o,
-			name: o.windturbine
-		}
-	})  // 选中excel当前项时, excel列表赋值给dialog 下拉框
-	queryForm.checkIds = excelList.value.map(o => o.id)
-	checkAll.value = true
-	funSubmit()
+	return false
+	// excelCheckIds.value = [obj.id] //当为单选展示风机图表时
+	// chartExcelList.value = excelList.value.map(o=> {
+	// 	return {
+	// 		...o,
+	// 		name: o.windturbine
+	// 	}
+	// })  // 选中excel当前项时, excel列表赋值给dialog 下拉框
+	// queryForm.checkIds = excelList.value.map(o => o.id)
+	// checkAll.value = true
+	// funSubmit()
 }
 const funExcelCheckChange = ({ checkArr, data }) => {
 	excelCheckIds.value = checkArr
+	funSubmit()
 }
 /**tree 开始 */
+const treeCopRef = ref()  //treeCop ref
 const treeData = ref([])
 const actTreeNode = ref(null)
 const funRepeatMap = (arr) => {
@@ -62,9 +66,14 @@ const funGetTree = async () => {
 	treeData.value = funRepeatMap(res.data)
 	if(actTreeNode.value){
 		funCurrentChange({current: actTreeNode.value, currentNode: null})
-		funExcelChange({id: actTreeNode.value.childs[0].id})
+		if(treeCopRef.value){
+			treeCopRef.value.setCheckedKeys([actTreeNode.value.id])
+			excelCheckIds.value = actTreeNode.value.childs.map(o => o.id)
+			funSubmit()
+		}
 	}
 }
+
 const funTreeCheckChange = ({ current, checkedNodes, checkedKeys, halfCheckedNodes, halfCheckedKeys }) => {  //tree change  -> excel change
 	funCurrentChange({ current, currentNode: '' })
 	const checkIds = []
@@ -78,8 +87,11 @@ const funTreeCheckChange = ({ current, checkedNodes, checkedKeys, halfCheckedNod
 		}
 	}
 	excelCheckIds.value = checkIds
+	funSubmit()
 }
+
 const funCurrentChange = ({ current, currentNode }) => {
+	excelCheckboxShow.value = true
 	if (current.childs) {
 		excelList.value = current.childs.map(o => {
 			return {
@@ -103,6 +115,11 @@ let chartId = 1
 const powerproductionNum = ref(0)
 /**submit */
 const funSubmit = async () => {
+	if (!excelCheckIds.value.length) {
+		ElMessage.error('请勾选要执行的项')
+		return false
+	}
+	wtData.value = []
 	const tempRes = await request.get('/wind/avg/speed', {
 		params: {
 			ids: excelCheckIds.value.join(','),
@@ -110,22 +127,16 @@ const funSubmit = async () => {
 	})
 	if (tempRes.code === 200) {
 		if (tempRes.data?.length) {
+			const xAxisData = [], barData1 = [], barData2 = [], lineData1 = [], lineData2 = []
 			for (const chart of tempRes.data) {
-				chart.currentData.sort((a,b) => {
-					return new Date(a.time).getTime() - new Date(b.time).getTime()
-				})
-				chart.preData.sort((a,b) => {
-					return new Date(a.time).getTime() - new Date(b.time).getTime()
-				})
-				const xAxisData = [], barData1 = [], barData2 = [], lineData1 = [], lineData2 = []
-				for(const current of chart.currentData){
-					xAxisData.push(current.time)
-					barData1.push(current.avgspeed)
-					lineData1.push((current.mrxs*100).toFixed(2))
+				xAxisData.push(chart.wtId)
+				if (chart.currentData){
+					barData1.push(chart.currentData.avgspeed)
+					lineData1.push((chart.currentData.mrxs*100).toFixed(2))
 				}
-				for(const current of chart.preData){
-					barData2.push(current.avgspeed)
-					lineData2.push((current.mrxs*100).toFixed(2))
+				if (chart.preData){
+					barData2.push(chart.preData.avgspeed)
+					lineData2.push((chart.preData.mrxs*100).toFixed(2))
 				}
 				barxAxis.data = xAxisData
 				linexAxis.data = xAxisData
@@ -142,7 +153,7 @@ const funSubmit = async () => {
 /**lineChart */
 const linexAxis = reactive({
 	type: 'category',
-	name: '',
+	name: '风机',
 	data: [],
 	splitLine: {
 		show: false
@@ -198,7 +209,14 @@ const lineSeries = reactive([{
 			color: '#F72C5B'
 		},
 		data: []
-	}
+	},
+	itemStyle:{
+		normal:{
+			lineStyle:{
+				type:'dashed'  //'dotted'点型虚线 'solid'实线 'dashed'线性虚线
+			}
+		}
+    }, 
 }])
 // 圈选散点触发函数
 const funChartSelect = async (batch) => {
@@ -252,7 +270,7 @@ const funChartSelect = async (batch) => {
 /**barChart */
 const barxAxis = reactive({
 	type: 'category',
-	name: '',
+	name: '风机',
 	data: [],
 	splitLine: {
 		show: false
@@ -292,7 +310,7 @@ const barSeries = reactive([{
 			color: '#F72C5B'
 		},
 		data: []
-	}
+	},
 },{
 	name: "机舱风速(历史)",
 	type: "line",
@@ -308,7 +326,14 @@ const barSeries = reactive([{
 			color: '#F72C5B'
 		},
 		data: []
-	}
+	},
+	itemStyle:{
+		normal:{
+			lineStyle:{
+				type:'dashed'  //'dotted'点型虚线 'solid'实线 'dashed'线性虚线
+			}
+		}
+    }, 
 }])
 /**dialog 数据 */
 const wtDialog = ref(false)
@@ -527,29 +552,29 @@ onActivated(() => {
 			<div class="text-[14px] absolute top-[-7px] text-[#838383] left-[20px]">数据展示</div>
 			<el-row :gutter="10">
 				<el-col :span="5">
-					<tree-cop :data="treeData" @checkChange="funTreeCheckChange" :show-checkbox="false" :height="treeHeight"
+					<tree-cop ref="treeCopRef" :data="treeData" @checkChange="funTreeCheckChange" :show-checkbox="true" :height="treeHeight"
 						@currentChange="funCurrentChange" @refresh="funGetTree">
 					</tree-cop>
 				</el-col>
 				<el-col :span="3">
-					<excel-cop :checkIds="excelCheckIds" :showCheckbox="false" :data="excelList" :height="excelHeight"
+					<excel-cop :checkIds="excelCheckIds" :showCheckbox="excelCheckboxShow" :data="excelList" :height="excelHeight"
 						@excelChange="funExcelChange" @checkChange="funExcelCheckChange"></excel-cop>
 				</el-col>
 				<el-col :span="16">
 					<div :style="{ height: tableHeight }"
 						class="flex flex-wrap justify-center items-center overflow-x-hidden overflow-y-auto ">
 						<div class="mb-[10px] w-[100%] h-[49%] flex flex-col items-end shadow rounded-[6px] shadow-blue-500">
-							<el-icon class="mr-[10px] mt-[10px] cursor-pointer" size="18"
+							<!-- <el-icon class="mr-[10px] mt-[10px] cursor-pointer" size="18"
 								@click="funActCop({xAxis:barxAxis, yAxis:baryAxis, series: barSeries}, 'barChartCop')">
 								<ZoomIn />
-							</el-icon>
+							</el-icon> -->
 							<bar-chart-cop width="100%" height="100%" :subtext="`月平均风速`" :xAxis="barxAxis" :yAxis="baryAxis" :series="barSeries"></bar-chart-cop>
 						</div>
 						<div class="w-[100%] h-[49%] flex flex-col items-end shadow rounded-[6px] shadow-blue-500">
-							<el-icon class="mr-[10px] mt-[10px] cursor-pointer" size="18"
+							<!-- <el-icon class="mr-[10px] mt-[10px] cursor-pointer" size="18"
 								@click="funActCop({xAxis:linexAxis, yAxis:lineyAxis, series: lineSeries}, 'lineChartCop')">
 								<ZoomIn />
-							</el-icon>
+							</el-icon> -->
 							<bar-chart-cop width="100%" height="100%" :subtext="`毛容量系数`" :xAxis="linexAxis" :yAxis="lineyAxis" :series="lineSeries"></bar-chart-cop>
 						</div>
 					</div>

+ 6 - 1
src/pages/dataFilter/prepare/index.vue

@@ -110,7 +110,9 @@ const funExport = async () => {
 const progress = ref(0)
 const funWebSocket = () => {
 	const webSocket = new WebSocket(`${socketURL}/ws/powerfitting/admin`)
-	webSocket.onerror = () => setTimeout(() => { funWebSocket() }, 2000)
+	webSocket.onerror = () => setTimeout(() => {
+		 funWebSocket() 
+		}, 2000)
 
 	webSocket.onmessage = (event) => {
 		const message = JSON.parse(event.data)
@@ -121,6 +123,9 @@ const funWebSocket = () => {
 				funGetTree()
 				progress.value = 0
 			}
+		} 
+		if (message.code === 4000){
+			ElMessage.error(message.msg);
 		}
 	}
 }

+ 1 - 1
src/pages/dataFilter/process/components/search.vue

@@ -36,7 +36,7 @@ const funSubmit = async () => {
 				<el-input-number v-model="queryForm.maxp" class="!w-[130px]"></el-input-number>
 			</el-form-item>
 			<el-form-item label="最小功率" class="!mb-0">
-				<el-input-number v-model="queryForm.minp" class="!w-[130px]" :min="0"></el-input-number>
+				<el-input-number v-model="queryForm.minp" class="!w-[130px]" :min="-100"></el-input-number>
 			</el-form-item>
 				<el-form-item label="筛选条件:" class="!mb-0">
 					<el-checkbox v-model="queryForm.isfbw">非并网</el-checkbox>

+ 73 - 0
src/pages/report/index.vue

@@ -0,0 +1,73 @@
+<template>
+	<div class="bg-white py-[10px] px-[10px] relative">
+        <div class="mb-[20px]">
+            <el-form class="" :inline="true" >
+                <el-form-item label="场站" class="!mb-0">
+                    <el-select v-model="queryForm.station" clear class="w-[150px]">
+                        <el-option v-for="item in stationList" :key="item.id" :label="item.title" :value="item.id"></el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="开始时间" class="!mb-0">
+                    <el-date-picker type="month" class="!w-[150px]" v-model="queryForm.st"></el-date-picker>
+                </el-form-item>
+                <el-form-item label="结束时间" class="!mb-0">
+                    <el-date-picker type="month" class="!w-[150px]" v-model="queryForm.et"></el-date-picker>
+                </el-form-item>
+                <el-form-item class="!mb-0">
+                    <submit-btn @submit="funQuery" desc="查询"></submit-btn>
+                </el-form-item>
+            </el-form>
+        </div>
+	</div>
+    <div class="mb-[20px] mt-[20px]">
+        <el-table :data="tableData"
+            stripe
+            size="small" v-loading="props.loading"
+            :style="{ width: '100%'}">
+            <el-table-column align="center" prop="station" label="场站名称"/>
+            <el-table-column align="center" prop="time" label="场站名称"/>
+            <el-table-column align="center" label="操作">
+                <template slot-scope="scope">
+                    <el-button
+                        size="mini"
+                        @click="handleEdit(scope.$index, scope.row)">下载</el-button>
+                    <el-button
+                        size="mini"
+                        @click="handleDownload(scope.$index, scope.row)">查看详情</el-button>
+                    </template>
+            </el-table-column>
+        </el-table>
+    </div>
+</template>
+
+<script setup name="report">
+import request from '@/api/axios.js'
+import { ref } from 'vue';
+
+const queryForm = ref({
+	station: '',
+	st: Date.now() - 30 * 24 * 60 * 60 * 1000,
+	et: Date.now(),
+	interval: 3
+})
+/**场站 */
+const stationList = ref([]);
+const funGetStation = async () => {
+	const res = await request.get("/base/station")
+	stationList.value = res.data
+}
+/**查询表格数据 */
+const tableData = ref()
+const funQuery = async () => {
+    const res = await request.get('/report/list', { params: {station: queryForm.station,st: queryForm.st,et: queryForm.et} })
+    if (res.code == 200){
+        tableData = res.data
+    }
+}
+
+/**created */
+funGetStation();
+// onActivated(() => {
+//     funQuery();
+// })
+</script>

+ 71 - 59
src/router/index.js

@@ -47,18 +47,18 @@ const routes = [{
                             '../pages/dataFilter/process/index.vue'
                         ),
                 },
-                {
-                    icon: 'el-icon-s-home',
-                    path: '/dataFilter/lightPrepare',
-                    name: 'dataFilterLightPrepare',
-                    meta: {
-                        title: '光伏数据准备',
-                    },
-                    component: () =>
-                        import(
-                            '../pages/dataFilter/lightPrepare/index.vue'
-                        ),
-                },
+                // {
+                //     icon: 'el-icon-s-home',
+                //     path: '/dataFilter/lightPrepare',
+                //     name: 'dataFilterLightPrepare',
+                //     meta: {
+                //         title: '光伏数据准备',
+                //     },
+                //     component: () =>
+                //         import(
+                //             '../pages/dataFilter/lightPrepare/index.vue'
+                //         ),
+                // },
             ]
         },
         {
@@ -124,18 +124,6 @@ const routes = [{
                 },
                 {
                     icon: 'el-icon-s-home',
-                    path: '/dataAnalysis/windAnalysis',
-                    name: 'dataAnalysisWindAnalysis',
-                    meta: {
-                        title: '损失电量分析',
-                    },
-                    component: () =>
-                        import(
-                            '../pages/dataAnalysis/windAnalysis/index.vue'
-                        ),
-                },
-                {
-                    icon: 'el-icon-s-home',
                     path: '/dataAnalysis/posAnalysis',
                     name: 'dataAnalysisPosAnalysis',
                     meta: {
@@ -158,16 +146,28 @@ const routes = [{
                             '../pages/dataAnalysis/spaceAnalysis/index.vue'
                         ),
                 },
+                // {
+                //     icon: 'el-icon-s-home',
+                //     path: '/dataAnalysis/angleAnalysis',
+                //     name: 'dataAnalysisAngleAnalysis',
+                //     meta: {
+                //         title: '浆距角分析',
+                //     },
+                //     component: () =>
+                //         import(
+                //             '../pages/dataAnalysis/angleAnalysis/index.vue'
+                //         ),
+                // },
                 {
                     icon: 'el-icon-s-home',
-                    path: '/dataAnalysis/angleAnalysis',
-                    name: 'dataAnalysisAngleAnalysis',
+                    path: '/dataAnalysis/windAnalysis',
+                    name: 'dataAnalysisWindAnalysis',
                     meta: {
-                        title: '浆距角分析',
+                        title: '损失电量分析',
                     },
                     component: () =>
                         import(
-                            '../pages/dataAnalysis/angleAnalysis/index.vue'
+                            '../pages/dataAnalysis/windAnalysis/index.vue'
                         ),
                 },
                 {
@@ -182,47 +182,59 @@ const routes = [{
                             '../pages/dataAnalysis/agcAnalysis/index.vue'
                         ),
                 },
-            ]
-        },
-        {
-            icon: 'iconfont iconbaojingpeizhi',
-            path: '/lightAnalysis',
-            name: 'lightAnalysis',
-            redirect: '/lightAnalysis/glAnalysis',
-            meta: {
-                title: '光伏分析',
-            },
-            component: () =>
-                import(
-                    '../pages/routerViewss.vue'
-                ),
-            children: [
-                {
-                    icon: 'el-icon-s-home',
-                    path: '/lightAnalysis/glAnalysis',
-                    name: 'glAnalysis',
-                    meta: {
-                        title: '功率曲线分析',
-                    },
-                    component: () =>
-                        import(
-                            '../pages/lightAnalysis/glAnalysis/index.vue'
-                        ),
-                },
                 {
                     icon: 'el-icon-s-home',
-                    path: '/lightAnalysis/glHotAnalysis',
-                    name: 'glHotAnalysis',
+                    path: '/report/index',
+                    name: 'reportIndex',
                     meta: {
-                        title: '功率光照曲线分析',
+                        title: '分析报告',
                     },
                     component: () =>
                         import(
-                            '../pages/lightAnalysis/glHotAnalysis/index.vue'
+                            '../pages/report/index.vue'
                         ),
                 },
             ]
         },
+        // {
+        //     icon: 'iconfont iconbaojingpeizhi',
+        //     path: '/lightAnalysis',
+        //     name: 'lightAnalysis',
+        //     redirect: '/lightAnalysis/glAnalysis',
+        //     meta: {
+        //         title: '光伏分析',
+        //     },
+        //     component: () =>
+        //         import(
+        //             '../pages/routerViewss.vue'
+        //         ),
+        //     children: [
+        //         {
+        //             icon: 'el-icon-s-home',
+        //             path: '/lightAnalysis/glAnalysis',
+        //             name: 'glAnalysis',
+        //             meta: {
+        //                 title: '功率曲线分析',
+        //             },
+        //             component: () =>
+        //                 import(
+        //                     '../pages/lightAnalysis/glAnalysis/index.vue'
+        //                 ),
+        //         },
+        //         {
+        //             icon: 'el-icon-s-home',
+        //             path: '/lightAnalysis/glHotAnalysis',
+        //             name: 'glHotAnalysis',
+        //             meta: {
+        //                 title: '功率光照曲线分析',
+        //             },
+        //             component: () =>
+        //                 import(
+        //                     '../pages/lightAnalysis/glHotAnalysis/index.vue'
+        //                 ),
+        //         },
+        //     ]
+        // },
     ],
 },