From 5ad61d6ad3a0ce12c7fe0808527069b09a7c9c0d Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期二, 16 九月 2025 17:31:05 +0800
Subject: [PATCH] 新增基础产品

---
 src/views/fysp/data-product/base-data-product/ProdMonitorDataInfo.vue |    4 
 src/api/fysp/dataproductApi.js                                        |    3 
 src/views/fysp/data-product/base-data-product/ProdInspectionInfo.vue  |    0 
 src/views/HomePage.vue                                                |   97 +++++
 src/api/fysp/dataprodbaseApi.js                                       |   48 ++
 src/views/fysp/data-product/base-data-product/ProdEvaluationInfo.vue  |    0 
 src/constants/menu.js                                                 |   58 +-
 src/router/index.js                                                   |  526 ++++++++++++++++--------------
 /dev/null                                                             |    4 
 src/api/index.js                                                      |    2 
 src/api/fysp/dataprodmiddleApi.js                                     |   48 ++
 src/views/fysp/data-product/base-data-product/ProdManage.vue          |  108 ++++++
 src/views/fysp/data-product/base-data-product/ProdSceneInfo.vue       |    2 
 src/App.vue                                                           |   94 -----
 14 files changed, 628 insertions(+), 366 deletions(-)

diff --git a/src/App.vue b/src/App.vue
index 998905c..c2229b5 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -1,40 +1,6 @@
 <template>
   <el-config-provider :locale="locale">
-    <el-container class="el-container">
-      <el-aside class="el-aside"
-        ><SiderMenu
-          :collapse="isCollapsed"
-          @nav-page="navPage"
-        ></SiderMenu
-      ></el-aside>
-      <el-container>
-        <el-header class="el-header"
-          ><Header
-            :navTitles="navTitles"
-            :collapse="isCollapsed"
-            @collapsed-sider="collapsedSider"
-          ></Header
-        ></el-header>
-        <el-main class="el-main">
-          <el-scrollbar>
-            <div class="el-main__content">
-              <Content></Content>
-              <!-- <el-backtop
-                target=".el-main .el-scrollbar__wrap"
-                :right="10"
-                :bottom="100"
-                style="z-index: 1000;"
-              >
-                <div class="back-top">
-                  <el-icon><ArrowUpBold /></el-icon>
-                  <span style="">杩斿洖椤堕儴</span>
-                </div>
-              </el-backtop> -->
-            </div>
-          </el-scrollbar>
-        </el-main>
-      </el-container>
-    </el-container>
+    <router-view></router-view>
   </el-config-provider>
 </template>
 
@@ -44,62 +10,8 @@
 export default {
   data() {
     return {
-      isCollapsed: false,
-      navTitles: [],
-      locale: zhCn,
+      locale: zhCn
     };
-  },
-  methods: {
-    collapsedSider(b) {
-      this.isCollapsed = b;
-    },
-    navPage(titles) {
-      this.navTitles = titles;
-    },
-  },
+  }
 };
 </script>
-
-<style scoped>
-.el-container{
-  /* min-height: 820px; */
-}
-.el-aside {
-  width: initial;
-}
-
-.el-header {
-  /* background-color: rgb(216, 201, 201); */
-  border-bottom: 1px solid var(--el-color-info-light-7);
-}
-
-.el-main {
-  position: relative;
-  /* background-color: bisque; */
-  padding: initial;
-  /* max-height: calc(100vh - 60px); */
-  /* overflow: hidden; */
-}
-
-.el-main__content {
-  padding: var(--el-main-padding) calc(var(--el-main-padding) / 2);
-  max-height: calc(100vh - 60px - var(--el-main-padding) * 2);
-  /* background-color: aqua; */
-  /* overflow: auto; */
-}
-.back-top {
-  display: flex;
-  align-items: center;
-  justify-content: space-around;
-  height: 100%;
-  width: 100%;
-  background-color: var(--el-bg-color-overlay);
-  box-shadow: var(--el-box-shadow-lighter);
-  text-align: center;
-  /* line-height: 40px; */
-  color: var(--el-color-info);
-  border: var(--el-border);
-  font-size: var(--el-font-size-medium);
-  border-radius: var(--el-border-radius-base);
-}
-</style>
diff --git a/src/api/fysp/dataprodbaseApi.js b/src/api/fysp/dataprodbaseApi.js
new file mode 100644
index 0000000..1beb3da
--- /dev/null
+++ b/src/api/fysp/dataprodbaseApi.js
@@ -0,0 +1,48 @@
+import { $fysp } from '../index';
+
+export default {
+  /**
+   * 鑾峰彇鏁版嵁浜у搧鍦烘櫙淇℃伅
+   * @param {*} option 鏁版嵁浜у搧鍦烘櫙淇℃伅鏌ヨ鍙傛暟
+   * @returns 
+   */
+  fetchProdSceneInfo(option) {
+    return $fysp.post(`dataProd/base/scene/get?`, option).then((res) => {
+      return res.data;
+    });
+  },
+  
+  /**
+   * 鑾峰彇鏁版嵁浜у搧璇勪及淇℃伅
+   * @param {*} option 鏁版嵁浜у搧璇勪及淇℃伅鏌ヨ鍙傛暟
+   * @returns 
+   */
+  fetchProdEvaluateInfo(option) {
+    return $fysp.post(`dataProd/base/evaluate/get?`, option).then((res) => {
+      return res.data;
+    });
+  },
+
+  /**
+   * 鑾峰彇鏁版嵁浜у搧宸℃煡淇℃伅
+   * @param {*} option 鏁版嵁浜у搧宸℃煡淇℃伅鏌ヨ鍙傛暟
+   * @returns 
+   */
+  fetchProdInspectionInfo(option) {
+    return $fysp.post(`dataProd/base/inspection/get?`, option).then((res) => {
+      return res.data;
+    });
+  },
+
+  /**
+   * 鑾峰彇鏁版嵁浜у搧鐩戞帶鏁版嵁淇℃伅
+   * @param {*} option 鏁版嵁浜у搧鐩戞帶鏁版嵁淇℃伅鏌ヨ鍙傛暟
+   * @returns 
+   */
+  fetchProdMonitorDataInfo(option) {
+    return $fysp.post(`dataProd/base/monitorData/get?`, option).then((res) => {
+      return res.data;
+    });
+  },
+  
+};
diff --git a/src/api/fysp/dataprodmiddleApi.js b/src/api/fysp/dataprodmiddleApi.js
new file mode 100644
index 0000000..0d99581
--- /dev/null
+++ b/src/api/fysp/dataprodmiddleApi.js
@@ -0,0 +1,48 @@
+import { $fysp } from '../index';
+
+export default {
+  
+  /**
+   * 宸℃煡瀹屾垚鎯呭喌姹囨��
+   * @param {*} option 
+   * @returns 
+   */
+  fetchInspectionSummary(option) {
+    return $fysp.post(`dataProd/middle/inspection/summary/get?`, option).then((res) => {
+      return res.data;
+    });
+  },
+  
+  /**
+   * 闂绫诲瀷姹囨��
+   * @param {*} option 
+   * @returns 
+   */
+  fetchProblemTypeSummary(option) {
+    return $fysp.post(`dataProd/middle/problemType/summary/get?`, option).then((res) => {
+      return res.data;
+    });
+  },
+
+  /**
+   * 鍒嗗尯鍩熷崟鍦烘櫙闂鏁伴噺
+   * @param {*} option 
+   * @returns 
+   */
+  fetchProblemCountByArea(option) {
+    return $fysp.post(`dataProd/middle/problemCount/area/get?`, option).then((res) => {
+      return res.data;
+    });
+  },
+
+  /**
+   * 鍒嗗尯鍩熷崟瑙勮寖鎬ф儏鍐�
+   * @param {*} option 
+   * @returns 
+   */
+  fetchEvaluationByArea(option) {
+    return $fysp.post(`dataProd/middle/evaluation/area/get?`, option).then((res) => {
+      return res.data;
+    });
+  },
+};
diff --git a/src/api/fysp/dataproductApi.js b/src/api/fysp/dataproductApi.js
index 7980a0f..1790067 100644
--- a/src/api/fysp/dataproductApi.js
+++ b/src/api/fysp/dataproductApi.js
@@ -48,5 +48,6 @@
     return $fysp.post(`dataProduct/problemRecurrence?`, option).then((res) => {
       return res.data;
     });
-  }
+  },
+
 };
diff --git a/src/api/index.js b/src/api/index.js
index a839aee..766ad71 100644
--- a/src/api/index.js
+++ b/src/api/index.js
@@ -1,7 +1,7 @@
 import axios from 'axios';
 import { ElMessage } from 'element-plus';
 
-const debug = false;
+const debug = true;
 
 // let ip1 = 'http://47.100.191.150:9005/';
 // let ip1_file = 'http://47.100.191.150:9005/';
diff --git a/src/constants/menu.js b/src/constants/menu.js
index b234fcb..2c2b22b 100644
--- a/src/constants/menu.js
+++ b/src/constants/menu.js
@@ -1,6 +1,6 @@
 const MENU_COMMON = [
   {
-    path: '/common/userMatch',
+    path: 'common/userMatch',
     icon: 'Connection',
     name: '璐︽埛鍖归厤'
   }
@@ -8,7 +8,7 @@
 
 if (import.meta.env.DEV) {
   MENU_COMMON.push({
-    path: '/common/docTest',
+    path: 'common/docTest',
     icon: 'Connection',
     name: '鏂囨。鐢熸垚'
   });
@@ -23,7 +23,7 @@
   //   ]
   // },
   {
-    path: '/fysp/procheck',
+    path: 'fysp/procheck',
     icon: 'CircleCheck',
     name: '闂鏁存敼'
   },
@@ -32,12 +32,12 @@
     name: '浠诲姟绠$悊',
     children: [
       {
-        path: '/fysp/task/manage',
+        path: 'fysp/task/manage',
         icon: 'CircleCheck',
         name: '鐩戠浠诲姟'
       },
       {
-        path: '/fysp/sceneInfo',
+        path: 'fysp/sceneInfo',
         icon: 'Files',
         name: '鍦烘櫙淇℃伅'
       }
@@ -47,23 +47,23 @@
     icon: 'DataAnalysis',
     name: '鍩虹鏁版嵁浜у搧',
     children: [
+      {
+        path: 'fysp/data-product/base/home/scene',
+        icon: 'Document',
+        name: '鐜板満宸℃煡',
+      },
       // {
-      //   path: '/fysp/data-product/base/ProdScenseInfo',
-      //   icon: 'Document',
-      //   name: '鍦烘櫙娓呭崟',
-      // },
-      // {
-      //   path: '/fysp/data-product/base/ProdMonitorTaskInfo',
+      //   path: 'fysp/data-product/base/ProdMonitorTaskInfo',
       //   icon: 'Document',
       //   name: '鐩戠娓呭崟',
       // },
       // {
-      //   path: '/fysp/data-product/base/ProdTreatmentDeviceInfo',
+      //   path: 'fysp/data-product/base/ProdTreatmentDeviceInfo',
       //   icon: 'Document',
       //   name: '闃叉不璁惧娓呭崟',
       // },
       {
-        path: '/fysp/data-product/base/PordProblemRecurrence',
+        path: 'fysp/data-product/base/PordProblemRecurrence',
         icon: 'Document',
         name: '闂澶嶅彂娓呭崟',
       },
@@ -74,27 +74,27 @@
     name: '涓棿鏁版嵁浜у搧',
     children: [
       {
-        path: '/fysp/data-product/profollow',
+        path: 'fysp/data-product/profollow',
         icon: 'Document',
         name: '闂鍔ㄦ�佽窡韪�'
       },
       {
-        path: '/fysp/data-product/proanalysis',
+        path: 'fysp/data-product/proanalysis',
         icon: 'Document',
         name: '闂鏁存敼鍒嗘瀽'
       },
       {
-        path: '/fysp/data-product/standardjudge',
+        path: 'fysp/data-product/standardjudge',
         icon: 'Document',
         name: '瑙勮寖鎬ц瘎浼�'
       },
       {
-        path: '/fysp/data-product/dailyreport',
+        path: 'fysp/data-product/dailyreport',
         icon: 'Document',
         name: '鏃ユ姤绠$悊'
       },
       {
-        path: '/fysp/data-product/lawenforcelist',
+        path: 'fysp/data-product/lawenforcelist',
         icon: 'Document',
         name: '鑱斿悎鎵ф硶娓呭崟'
       },
@@ -106,7 +106,7 @@
     name: '鏈�缁堟暟鎹骇鍝�',
     children: [
       {
-        path: '/fysp/data-product/scenereport',
+        path: 'fysp/data-product/scenereport',
         icon: 'Document',
         name: '鍦烘櫙鍒嗘瀽鎶ュ憡'
       }
@@ -122,12 +122,12 @@
     name: '鑷姩璇勪及',
     children: [
       {
-        path: '/fysp/evaluation/evalutationTask',
+        path: 'fysp/evaluation/evalutationTask',
         icon: 'MessageBox',
         name: '璇勪及浠诲姟'
       },
       {
-        path: '/fysp/evaluation/evalutationRecord',
+        path: 'fysp/evaluation/evalutationRecord',
         icon: 'Tickets',
         name: '璇勪及璁板綍'
       }
@@ -138,25 +138,25 @@
     name: '閰嶇疆绠$悊',
     children: [
       {
-        path: '/fysp/config/problemType',
+        path: 'fysp/config/problemType',
         icon: 'List',
         name: '鐩戠闂'
       },
       {
-        path: '/fysp/config/deviceMatch',
+        path: 'fysp/config/deviceMatch',
         icon: 'List',
         name: '璁惧鍖归厤'
       },
       {
         //璇勪及瑙勫垯绠$悊
-        path: '/fysp/config/evalutationRule',
+        path: 'fysp/config/evalutationRule',
         icon: 'List',
         name: '璇勪及瑙勫垯'
       }
     ]
   },
   {
-    path: '/fysp/support',
+    path: 'fysp/support',
     icon: 'Files',
     name: '瀵瑰鏀寔'
   },
@@ -210,17 +210,17 @@
 
 const MENU_FYTZ = [
   // {
-  //   path: '/fytz/ledger',
+  //   path: 'fytz/ledger',
   //   icon: 'Search',
   //   name: '鍙拌处瀹℃牳'
   // },
   {
-    path: '/fytz/notice',
+    path: 'fytz/notice',
     icon: 'Message',
     name: '閫氱煡绠$悊'
   },
   {
-    path: '/fytz/userInfo',
+    path: 'fytz/userInfo',
     icon: 'User',
     name: '璐︽埛淇℃伅'
   },
@@ -229,7 +229,7 @@
     name: '璧勬簮绠$悊',
     children: [
       {
-        path: '/fytz/enforceCase',
+        path: 'fytz/enforceCase',
         icon: 'Search',
         name: '鐫e療妗堜緥'
       }
diff --git a/src/router/index.js b/src/router/index.js
index 9fe8550..fa7bcf8 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -1,256 +1,304 @@
 // eslint-disable-next-line no-unused-vars
-import { createRouter, createWebHistory, createWebHashHistory } from 'vue-router'
-import pinia from '../stores/index'
-import { useLoadingStore } from '../stores/loadingStore'
+import {
+  createRouter,
+  createWebHistory,
+  createWebHashHistory
+} from 'vue-router';
+import pinia from '../stores/index';
+import { useLoadingStore } from '../stores/loadingStore';
 
 const routes = [
-  // {
-  //   //鏁存敼瀹℃牳
-  //   name: 'changecheck',
-  //   path: '/changecheck',
-  //   component: () => import('@/views/check/ChangeCheck.vue')
-  // },
-  /**********************************椋炵窘鐩戠***********************************************/
   {
-    //闂鍔ㄦ�佽窡韪�
-    name: 'profollow',
-    path: '/fysp/data-product/profollow',
-    component: () => import('@/views/fysp/data-product/ProdProFollow.vue')
-  },
-  {
-    //闂鏁存敼鍒嗘瀽
-    name: 'proanalysis',
-    path: '/fysp/data-product/proanalysis',
-    component: () => import('@/views/fysp/data-product/ProdProAnalysis.vue')
-  },
-  {
-    //瑙勮寖鎬ц瘎浼�
-    name: 'standardjudge',
-    path: '/fysp/data-product/standardjudge',
-    component: () => import('@/views/fysp/data-product/ProdStandardJudge.vue')
-  },
-  {
-    //鏃ユ姤绠$悊
-    name: 'dailyreport',
-    path: '/fysp/data-product/dailyreport',
-    component: () => import('@/views/fysp/data-product/ProdDailyReport.vue')
-  },
-  {
-    //鍦烘櫙鎶ュ憡
-    name: 'scenereport',
-    path: '/fysp/data-product/scenereport',
-    component: () => import('@/views/fysp/data-product/ProdSceneReport.vue')
-  },
-  {
-    //鍦烘櫙鎶ュ憡
-    name: 'lawenforcelist',
-    path: '/fysp/data-product/lawenforcelist',
-    component: () => import('@/views/fysp/data-product/ProdLawEnforceList.vue')
-  },
-  // {
-  //   //鍦烘櫙鎶ュ憡-宸ュ湴
-  //   name: 'construction',
-  //   path: '/scenereport/construction',
-  //   component: () => import('@/views/fysp/scenereport/ConstructionReport.vue')
-  // },
-  // {
-  //   //鍦烘櫙鎶ュ憡-鐮佸ご
-  //   name: 'wharf',
-  //   path: '/scenereport/wharf',
-  //   component: () => import('@/views/fysp/scenereport/WharfReport.vue')
-  // },
-  // {
-  //   //鍦烘櫙鎶ュ憡-鎼呮媽绔�
-  //   name: 'mixing',
-  //   path: '/scenereport/mixing',
-  //   component: () => import('@/views/fysp/scenereport/MixingReport.vue')
-  // },
-  // {
-  //   //鍦烘櫙鎶ュ憡-鍫嗗満
-  //   name: 'storage',
-  //   path: '/scenereport/storage',
-  //   component: () => import('@/views/fysp/scenereport/StorageReport.vue')
-  // },
+    name: 'home',
+    path: '/',
+    component: () => import('@/views/HomePage.vue'),
+    children: [
+      // {
+      //   //鏁存敼瀹℃牳
+      //   name: 'changecheck',
+      //   path: '/changecheck',
+      //   component: () => import('@/views/check/ChangeCheck.vue')
+      // },
+      /**********************************椋炵窘鐩戠***********************************************/
+      {
+        //闂鍔ㄦ�佽窡韪�
+        name: 'profollow',
+        path: 'fysp/data-product/profollow',
+        component: () => import('@/views/fysp/data-product/ProdProFollow.vue')
+      },
+      {
+        //闂鏁存敼鍒嗘瀽
+        name: 'proanalysis',
+        path: 'fysp/data-product/proanalysis',
+        component: () => import('@/views/fysp/data-product/ProdProAnalysis.vue')
+      },
+      {
+        //瑙勮寖鎬ц瘎浼�
+        name: 'standardjudge',
+        path: 'fysp/data-product/standardjudge',
+        component: () =>
+          import('@/views/fysp/data-product/ProdStandardJudge.vue')
+      },
+      {
+        //鏃ユ姤绠$悊
+        name: 'dailyreport',
+        path: 'fysp/data-product/dailyreport',
+        component: () => import('@/views/fysp/data-product/ProdDailyReport.vue')
+      },
+      {
+        //鍦烘櫙鎶ュ憡
+        name: 'scenereport',
+        path: 'fysp/data-product/scenereport',
+        component: () => import('@/views/fysp/data-product/ProdSceneReport.vue')
+      },
+      {
+        //鍦烘櫙鎶ュ憡
+        name: 'lawenforcelist',
+        path: 'fysp/data-product/lawenforcelist',
+        component: () =>
+          import('@/views/fysp/data-product/ProdLawEnforceList.vue')
+      },
+      // {
+      //   //鍦烘櫙鎶ュ憡-宸ュ湴
+      //   name: 'construction',
+      //   path: '/scenereport/construction',
+      //   component: () => import('@/views/fysp/scenereport/ConstructionReport.vue')
+      // },
+      // {
+      //   //鍦烘櫙鎶ュ憡-鐮佸ご
+      //   name: 'wharf',
+      //   path: '/scenereport/wharf',
+      //   component: () => import('@/views/fysp/scenereport/WharfReport.vue')
+      // },
+      // {
+      //   //鍦烘櫙鎶ュ憡-鎼呮媽绔�
+      //   name: 'mixing',
+      //   path: '/scenereport/mixing',
+      //   component: () => import('@/views/fysp/scenereport/MixingReport.vue')
+      // },
+      // {
+      //   //鍦烘櫙鎶ュ憡-鍫嗗満
+      //   name: 'storage',
+      //   path: '/scenereport/storage',
+      //   component: () => import('@/views/fysp/scenereport/StorageReport.vue')
+      // },
 
-  {
-    //鐩戠浠诲姟
-    name: 'taskmanage',
-    path: '/fysp/task/manage',
-    component: () => import('@/views/fysp/task/TaskManage.vue'),
-    meta: { keepAlive: true }
-  },
-  {
-    //鐩戠浠诲姟鍦烘櫙缂栬緫
-    name: 'monitorObjEdit',
-    path: '/fysp/task/edit',
-    component: () => import('@/views/fysp/task/MonitorObjEdit.vue')
-  },
-  {
-    //鐩戠浠诲姟璁″垝缂栬緫
-    name: 'monitorPlanEdit',
-    path: '/fysp/task/plan/edit',
-    component: () => import('@/views/fysp/task/MonitorPlanEdit.vue')
-  },
-  {
-    //鐩戠浠诲姟璁″垝缂栬緫
-    name: 'monitorTaskCreate',
-    path: '/fysp/task/create',
-    component: () => import('@/views/fysp/task/MonitorTaskCreate.vue')
-  },
-  {
-    //闂瀹℃牳
-    name: 'procheck',
-    path: '/fysp/procheck',
-    component: () => import('@/views/fysp/check/ProCheck.vue')
-  },
-  // {
-  //   //璐︽埛绠$悊
-  //   name: 'fyspUser',
-  //   path: '/fysp/userInfo',
-  //   component: () => import('@/views/baseinfo/fysp/user/UserInfo.vue')
-  // },
-  {
-    //鐩戠闂
-    name: 'fyspProblemType',
-    path: '/fysp/config/problemType',
-    component: () => import('@/views/fysp/config/ProblemType.vue')
-  },
-  {
-    //璁惧鍖归厤
-    name: 'fyspDeviceMatch',
-    path: '/fysp/config/deviceMatch',
-    component: () => import('@/views/fysp/config/DeviceMatch.vue')
-  },
-  {
-    //璇勪及瑙勫垯绠$悊
-    name: 'fyspEvalutationRule',
-    path: '/fysp/config/evalutationRule',
-    component: () => import('@/views/fysp/config/EvalutationRule.vue')
-  },
-  {
-    //璇勪及鏁版嵁婧�
-    name: 'fyspEvalutationTask',
-    path: '/fysp/evaluation/evalutationTask',
-    component: () => import('@/views/fysp/evaluation/EvalutationTask.vue'),
-    meta: { keepAlive: false }
-  },
-  {
-    //璇勪及绠$悊
-    name: 'fyspEvalutationRecord',
-    path: '/fysp/evaluation/evalutationRecord',
-    component: () => import('@/views/fysp/evaluation/EvalutationRecord.vue'),
-    meta: { keepAlive: true }
-  },
-  {
-    //璇勪及缁撴灉璇︽儏
-    name: 'fyspEvalutationEdit',
-    path: '/fysp/evaluation/evalutationEdit/:subTaskId',
-    component: () => import('@/views/fysp/evaluation/EvalutationEdit.vue'),
-  },
-  {
-    //鍦烘櫙淇℃伅
-    name: 'fyspSceneInfo',
-    path: '/fysp/sceneInfo',
-    component: () => import('@/views/fysp/scene/SceneInfo.vue'),
-    meta: { keepAlive: true }
-  },
-  {
-    //鍦烘櫙缂栬緫
-    name: 'fyspSceneEdit',
-    path: '/fysp/sceneEdit/:sid',
-    component: () => import('@/views/fysp/scene/SceneEdit.vue'),
-    meta: { transition: 'slide-left' }
-  },
-  {
-    //瀵瑰鏀寔
-    name: 'fyspSupport',
-    path: '/fysp/support',
-    component: () => import('@/views/fysp/support/JingAnSupport.vue'),
-  },
-  {
-    // 鍩虹浜у搧-鍦烘櫙娓呭崟
-    name: 'ProdScenseInfo',
-    path: '/fysp/data-product/base/ProdScenseInfo',
-    component: () => import('@/views/fysp/data-product/base-data-product/ProdScenseInfo.vue')
-  },
-  {
-    // 鍩虹浜у搧-鐩戠娓呭崟
-    name: 'ProdMonitorTaskInfo',
-    path: '/fysp/data-product/base/ProdMonitorTaskInfo',
-    component: () => import('@/views/fysp/data-product/base-data-product/ProdMonitorTaskInfo.vue')
-  },
-  {
-    // 鍩虹浜у搧-闃叉不璁惧娓呭崟
-    name: 'ProdTreatmentDeviceInfo',
-    path: '/fysp/data-product/base/ProdTreatmentDeviceInfo',
-    component: () => import('@/views/fysp/data-product/base-data-product/ProdTreatmentDeviceInfo.vue')
-  },
-  {
-    // 鍩虹浜у搧-闂澶嶅彂娓呭崟
-    name: 'PordProblemRecurrence',
-    path: '/fysp/data-product/base/PordProblemRecurrence',
-    component: () => import('@/views/fysp/data-product/base-data-product/PordProblemRecurrence.vue')
-  },
+      {
+        //鐩戠浠诲姟
+        name: 'taskmanage',
+        path: 'fysp/task/manage',
+        component: () => import('@/views/fysp/task/TaskManage.vue'),
+        meta: { keepAlive: true }
+      },
+      {
+        //鐩戠浠诲姟鍦烘櫙缂栬緫
+        name: 'monitorObjEdit',
+        path: 'fysp/task/edit',
+        component: () => import('@/views/fysp/task/MonitorObjEdit.vue')
+      },
+      {
+        //鐩戠浠诲姟璁″垝缂栬緫
+        name: 'monitorPlanEdit',
+        path: 'fysp/task/plan/edit',
+        component: () => import('@/views/fysp/task/MonitorPlanEdit.vue')
+      },
+      {
+        //鐩戠浠诲姟璁″垝缂栬緫
+        name: 'monitorTaskCreate',
+        path: 'fysp/task/create',
+        component: () => import('@/views/fysp/task/MonitorTaskCreate.vue')
+      },
+      {
+        //闂瀹℃牳
+        name: 'procheck',
+        path: 'fysp/procheck',
+        component: () => import('@/views/fysp/check/ProCheck.vue')
+      },
+      // {
+      //   //璐︽埛绠$悊
+      //   name: 'fyspUser',
+      //   path: 'fysp/userInfo',
+      //   component: () => import('@/views/baseinfo/fysp/user/UserInfo.vue')
+      // },
+      {
+        //鐩戠闂
+        name: 'fyspProblemType',
+        path: 'fysp/config/problemType',
+        component: () => import('@/views/fysp/config/ProblemType.vue')
+      },
+      {
+        //璁惧鍖归厤
+        name: 'fyspDeviceMatch',
+        path: 'fysp/config/deviceMatch',
+        component: () => import('@/views/fysp/config/DeviceMatch.vue')
+      },
+      {
+        //璇勪及瑙勫垯绠$悊
+        name: 'fyspEvalutationRule',
+        path: 'fysp/config/evalutationRule',
+        component: () => import('@/views/fysp/config/EvalutationRule.vue')
+      },
+      {
+        //璇勪及鏁版嵁婧�
+        name: 'fyspEvalutationTask',
+        path: 'fysp/evaluation/evalutationTask',
+        component: () => import('@/views/fysp/evaluation/EvalutationTask.vue'),
+        meta: { keepAlive: false }
+      },
+      {
+        //璇勪及绠$悊
+        name: 'fyspEvalutationRecord',
+        path: 'fysp/evaluation/evalutationRecord',
+        component: () =>
+          import('@/views/fysp/evaluation/EvalutationRecord.vue'),
+        meta: { keepAlive: true }
+      },
+      {
+        //璇勪及缁撴灉璇︽儏
+        name: 'fyspEvalutationEdit',
+        path: 'fysp/evaluation/evalutationEdit/:subTaskId',
+        component: () => import('@/views/fysp/evaluation/EvalutationEdit.vue')
+      },
+      {
+        //鍦烘櫙淇℃伅
+        name: 'fyspSceneInfo',
+        path: 'fysp/sceneInfo',
+        component: () => import('@/views/fysp/scene/SceneInfo.vue'),
+        meta: { keepAlive: true }
+      },
+      {
+        //鍦烘櫙缂栬緫
+        name: 'fyspSceneEdit',
+        path: 'fysp/sceneEdit/:sid',
+        component: () => import('@/views/fysp/scene/SceneEdit.vue'),
+        meta: { transition: 'slide-left' }
+      },
+      {
+        //瀵瑰鏀寔
+        name: 'fyspSupport',
+        path: 'fysp/support',
+        component: () => import('@/views/fysp/support/JingAnSupport.vue')
+      },
+      {
+        // 鍩虹浜у搧-绠$悊
+        name: 'ProdManage',
+        path: 'fysp/data-product/base/home',
+        component: () =>
+          import('@/views/fysp/data-product/base-data-product/ProdManage.vue'),
+        children: [
+          {
+            // 鍩虹浜у搧-鍦烘櫙娓呭崟
+            path: 'scene',
+            name: 'ProdSceneInfo',
+            meta: { keepAlive: true },
+            component: () =>
+              import(
+                '@/views/fysp/data-product/base-data-product/ProdSceneInfo.vue'
+              )
+          },
+          {
+            // 鍩虹浜у搧-瑙勮寖鎬ц瘎浼�
+            path: 'evaluate',
+            name: 'ProdEvaluationInfo',
+            meta: { keepAlive: true },
+            component: () =>
+              import(
+                '@/views/fysp/data-product/base-data-product/ProdEvaluationInfo.vue'
+              )
+          },
+          {
+            // 鍩虹浜у搧-宸℃煡淇℃伅
+            path: 'inspection',
+            name: 'ProdInspectionInfo',
+            meta: { keepAlive: true },
+            component: () =>
+              import(
+                '@/views/fysp/data-product/base-data-product/ProdInspectionInfo.vue'
+              )
+          },
+          {
+            // 鍩虹浜у搧-鐩戞祴鏁版嵁
+            path: 'monitordata',
+            name: 'ProdMonitorDataInfo',
+            meta: { keepAlive: true },
+            component: () =>
+              import(
+                '@/views/fysp/data-product/base-data-product/ProdMonitorDataInfo.vue'
+              )
+          }
+        ]
+      },
+      {
+        // 鍩虹浜у搧-闂澶嶅彂娓呭崟
+        name: 'PordProblemRecurrence',
+        path: 'fysp/data-product/base/PordProblemRecurrence',
+        component: () =>
+          import(
+            '@/views/fysp/data-product/base-data-product/PordProblemRecurrence.vue'
+          )
+      },
 
-  /**********************************椋炵窘鐜***********************************************/
-  {
-    //鍙拌处瀹℃牳
-    name: 'ledger',
-    path: '/fytz/ledger',
-    component: () => import('@/views/fytz/ledger/LedgerManage.vue')
-  },
-  {
-    //閫氱煡绠$悊
-    name: 'notice',
-    path: '/fytz/notice',
-    component: () => import('@/views/fytz/notice/NoticeManage.vue')
-  },
-  {
-    //璐︽埛绠$悊
-    name: 'fytzUser',
-    path: '/fytz/userInfo',
-    component: () => import('@/views/fytz/user/UserInfo.vue'),
-    meta: { keepAlive: true }
-  },
-  {
-    //璐︽埛缂栬緫
-    name: 'fytzUserEdit',
-    path: '/fytz/userEdit/:userId',
-    component: () => import('@/views/fytz/user/UserEdit.vue'),
-    meta: { transition: 'slide-left' }
-  },
-  {
-    //鐜繚鐫e療妗堜緥
-    name: 'enforceCase',
-    path: '/fytz/enforceCase',
-    component: () => import('@/views/fytz/enforce-case/EnforceCase.vue')
-  },
+      /**********************************椋炵窘鐜***********************************************/
+      {
+        //鍙拌处瀹℃牳
+        name: 'ledger',
+        path: 'fytz/ledger',
+        component: () => import('@/views/fytz/ledger/LedgerManage.vue')
+      },
+      {
+        //閫氱煡绠$悊
+        name: 'notice',
+        path: 'fytz/notice',
+        component: () => import('@/views/fytz/notice/NoticeManage.vue')
+      },
+      {
+        //璐︽埛绠$悊
+        name: 'fytzUser',
+        path: 'fytz/userInfo',
+        component: () => import('@/views/fytz/user/UserInfo.vue'),
+        meta: { keepAlive: true }
+      },
+      {
+        //璐︽埛缂栬緫
+        name: 'fytzUserEdit',
+        path: 'fytz/userEdit/:userId',
+        component: () => import('@/views/fytz/user/UserEdit.vue'),
+        meta: { transition: 'slide-left' }
+      },
+      {
+        //鐜繚鐫e療妗堜緥
+        name: 'enforceCase',
+        path: 'fytz/enforceCase',
+        component: () => import('@/views/fytz/enforce-case/EnforceCase.vue')
+      },
 
-  /**********************************閫氱敤妯″潡***********************************************/
-  {
-    //璐︽埛鍖归厤
-    name: 'userMatch',
-    path: '/common/userMatch',
-    component: () => import('@/views/common/UserMatch.vue')
-  },
-  {
-    //鏂囨。鐢熸垚娴嬭瘯
-    name: 'docTest',
-    path: '/common/docTest',
-    component: () => import('@/views/DocTest.vue')
+      /**********************************閫氱敤妯″潡***********************************************/
+      {
+        //璐︽埛鍖归厤
+        name: 'userMatch',
+        path: 'common/userMatch',
+        component: () => import('@/views/common/UserMatch.vue')
+      },
+      {
+        //鏂囨。鐢熸垚娴嬭瘯
+        name: 'docTest',
+        path: 'common/docTest',
+        component: () => import('@/views/DocTest.vue')
+      }
+    ]
   }
-]
+];
 
 const router = createRouter({
   // history: createWebHistory(import.meta.env.BASE_URL)
   history: createWebHashHistory(),
   routes: routes
-})
+});
 
-const loadingStore = useLoadingStore(pinia)
+const loadingStore = useLoadingStore(pinia);
 // eslint-disable-next-line no-unused-vars
 router.afterEach((to, from) => {
-  loadingStore.clearLoading()
-})
+  loadingStore.clearLoading();
+});
 
-export { router, routes }
+export { router, routes };
diff --git a/src/views/HomePage.vue b/src/views/HomePage.vue
new file mode 100644
index 0000000..83ce519
--- /dev/null
+++ b/src/views/HomePage.vue
@@ -0,0 +1,97 @@
+<template>
+  <el-container class="el-container">
+    <el-aside class="el-aside"
+      ><SiderMenu :collapse="isCollapsed" @nav-page="navPage"></SiderMenu
+    ></el-aside>
+    <el-container>
+      <el-header class="el-header"
+        ><Header
+          :navTitles="navTitles"
+          :collapse="isCollapsed"
+          @collapsed-sider="collapsedSider"
+        ></Header
+      ></el-header>
+      <el-main class="el-main">
+        <el-scrollbar>
+          <div class="el-main__content">
+            <Content></Content>
+            <!-- <el-backtop
+                target=".el-main .el-scrollbar__wrap"
+                :right="10"
+                :bottom="100"
+                style="z-index: 1000;"
+              >
+                <div class="back-top">
+                  <el-icon><ArrowUpBold /></el-icon>
+                  <span style="">杩斿洖椤堕儴</span>
+                </div>
+              </el-backtop> -->
+          </div>
+        </el-scrollbar>
+      </el-main>
+    </el-container>
+  </el-container>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      isCollapsed: false,
+      navTitles: []
+    };
+  },
+  methods: {
+    collapsedSider(b) {
+      this.isCollapsed = b;
+    },
+    navPage(titles) {
+      this.navTitles = titles;
+    }
+  }
+};
+</script>
+
+<style scoped>
+.el-container {
+  /* min-height: 820px; */
+}
+.el-aside {
+  width: initial;
+}
+
+.el-header {
+  /* background-color: rgb(216, 201, 201); */
+  border-bottom: 1px solid var(--el-color-info-light-7);
+}
+
+.el-main {
+  position: relative;
+  /* background-color: bisque; */
+  padding: initial;
+  /* max-height: calc(100vh - 60px); */
+  /* overflow: hidden; */
+}
+
+.el-main__content {
+  padding: var(--el-main-padding) calc(var(--el-main-padding) / 2);
+  max-height: calc(100vh - 60px - var(--el-main-padding) * 2);
+  /* background-color: aqua; */
+  /* overflow: auto; */
+}
+.back-top {
+  display: flex;
+  align-items: center;
+  justify-content: space-around;
+  height: 100%;
+  width: 100%;
+  background-color: var(--el-bg-color-overlay);
+  box-shadow: var(--el-box-shadow-lighter);
+  text-align: center;
+  /* line-height: 40px; */
+  color: var(--el-color-info);
+  border: var(--el-border);
+  font-size: var(--el-font-size-medium);
+  border-radius: var(--el-border-radius-base);
+}
+</style>
diff --git a/src/views/fysp/data-product/base-data-product/ProdScenseInfo.vue b/src/views/fysp/data-product/base-data-product/ProdEvaluationInfo.vue
similarity index 100%
rename from src/views/fysp/data-product/base-data-product/ProdScenseInfo.vue
rename to src/views/fysp/data-product/base-data-product/ProdEvaluationInfo.vue
diff --git a/src/views/fysp/data-product/base-data-product/ProdScenseInfo.vue b/src/views/fysp/data-product/base-data-product/ProdInspectionInfo.vue
similarity index 100%
copy from src/views/fysp/data-product/base-data-product/ProdScenseInfo.vue
copy to src/views/fysp/data-product/base-data-product/ProdInspectionInfo.vue
diff --git a/src/views/fysp/data-product/base-data-product/ProdManage.vue b/src/views/fysp/data-product/base-data-product/ProdManage.vue
new file mode 100644
index 0000000..8d04a34
--- /dev/null
+++ b/src/views/fysp/data-product/base-data-product/ProdManage.vue
@@ -0,0 +1,108 @@
+<template>
+  <!-- <el-menu default-active="scene" ellipsis mode="horizontal" style="max-width: 600px">
+    <el-menu-item index="scene" @click="navPage">鍦烘櫙娓呭崟</el-menu-item>
+    <el-menu-item index="evaluate" @click="navPage">璇勪及娓呭崟</el-menu-item>
+    <el-menu-item index="inspection" @click="navPage">宸℃煡淇℃伅</el-menu-item>
+    <el-menu-item index="monitorData" @click="navPage">鐩戞祴鏁版嵁</el-menu-item>
+  </el-menu> -->
+  <!-- <a @click="navPage({ index: 'scene' })"><div>鍦烘櫙娓呭崟</div></a>
+  <a @click="navPage({ index: 'evaluate' })"><div>璇勪及娓呭崟</div></a>
+  <a @click="navPage({ index: 'inspection' })"><div>宸℃煡淇℃伅</div></a>
+  <a @click="navPage({ index: 'monitorData' })"><div>鐩戞祴鏁版嵁</div></a> -->
+  <el-space>
+    <template v-for="(item, index) in menu" :key="item.path">
+      <a :class="btnClz(item.selected)" @click="navTo(index)">
+        <div>{{ item.name }}</div>
+      </a>
+    </template>
+  </el-space>
+  <div>sssss</div>
+  <router-view v-slot="{ Component, route }">
+    <keep-alive>
+      <component
+        v-if="route.meta.keepAlive"
+        :is="Component"
+        :key="route.name"
+      />
+    </keep-alive>
+    <component v-if="!route.meta.keepAlive" :is="Component" :key="route.name" />
+  </router-view>
+</template>
+<script setup>
+import { ref, onMounted } from 'vue';
+import { useRouter, useRoute } from 'vue-router';
+
+const router = useRouter();
+const route = useRoute();
+
+const menu = ref([
+  {
+    name: '鍦烘櫙娓呭崟',
+    path: 'scene',
+    selected: true
+  },
+  {
+    name: '璇勪及娓呭崟',
+    path: 'evaluate'
+  },
+  {
+    name: '宸℃煡淇℃伅',
+    path: 'inspection'
+  },
+  {
+    name: '鐩戞祴鏁版嵁',
+    path: 'monitorData'
+  }
+]);
+// console.log(router);
+// console.log(route.path);
+
+const navPage = (item) => {
+  console.log(item);
+  if (item.index) {
+    router.push({
+      path: item.index
+    });
+  }
+};
+function btnClz(selected) {
+  return (
+    'mode-btn ' + (selected ? 'btn-selected ' : 'btn-unselected ') + 'm-r-8'
+  );
+}
+
+function navTo(index) {
+  const m = this.menu;
+  m.forEach((e) => {
+    e.selected = false;
+  });
+  m[index].selected = true;
+  router.replace(m[index].path);
+}
+
+onMounted(() => {
+  console.log(route.path);
+  // router.push('/fysp/data-product/base/home/scene');
+});
+</script>
+<style scoped>
+.mode-btn {
+  padding: 8px 16px;
+  border-radius: 4px;
+  font-size: 14px;
+  color: #303133;
+  background-color: #f5f7fa;
+  border: 1px solid #dcdfe6;
+  cursor: pointer;
+}
+.btn-selected {
+  color: #fff;
+  background-color: #409eff;
+  border-color: #409eff;
+}
+.btn-unselected {
+  color: #303133;
+  background-color: #f5f7fa;
+  border-color: #dcdfe6;
+}
+</style>
diff --git a/src/views/fysp/data-product/base-data-product/ProdMonitorDataInfo.vue b/src/views/fysp/data-product/base-data-product/ProdMonitorDataInfo.vue
new file mode 100644
index 0000000..91bfefa
--- /dev/null
+++ b/src/views/fysp/data-product/base-data-product/ProdMonitorDataInfo.vue
@@ -0,0 +1,4 @@
+<template>
+  1
+</template>
+<script setup></script>
\ No newline at end of file
diff --git a/src/views/fysp/data-product/base-data-product/ProdMonitorTaskInfo.vue b/src/views/fysp/data-product/base-data-product/ProdSceneInfo.vue
similarity index 71%
rename from src/views/fysp/data-product/base-data-product/ProdMonitorTaskInfo.vue
rename to src/views/fysp/data-product/base-data-product/ProdSceneInfo.vue
index dc19bf6..6c8ee7c 100644
--- a/src/views/fysp/data-product/base-data-product/ProdMonitorTaskInfo.vue
+++ b/src/views/fysp/data-product/base-data-product/ProdSceneInfo.vue
@@ -1,4 +1,4 @@
 <template>
-  1
+  ProdSceneInfo
 </template>
 <script></script>
\ No newline at end of file
diff --git a/src/views/fysp/data-product/base-data-product/ProdTreatmentDeviceInfo.vue b/src/views/fysp/data-product/base-data-product/ProdTreatmentDeviceInfo.vue
deleted file mode 100644
index dc19bf6..0000000
--- a/src/views/fysp/data-product/base-data-product/ProdTreatmentDeviceInfo.vue
+++ /dev/null
@@ -1,4 +0,0 @@
-<template>
-  1
-</template>
-<script></script>
\ No newline at end of file

--
Gitblit v1.9.3