From b330e57051e54789eb83d10dc58c4d9d10c608e1 Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期三, 17 九月 2025 09:55:19 +0800
Subject: [PATCH] 2025.9.17 数据产品模块(待完成)

---
 src/views/fysp/data-product/base-data-product/components/BaseProdProcess.vue |   62 +++
 src/components/core/Content.vue                                              |   10 
 src/api/index.js                                                             |    3 
 src/components.d.ts                                                          |    8 
 src/components/SearchBar.vue                                                 |   20 
 src/views/fysp/data-product/base-data-product/ProdManage.vue                 |   76 ---
 src/views/fysp/data-product/base-data-product/ProdSceneInfo.vue              |   31 +
 src/constants/menu.js                                                        |   48 +-
 src/router/index.js                                                          |  461 +++++++++++++-----------
 src/router/index copy.js                                                     |  304 ++++++++++++++++
 src/views/fysp/data-product/base-data-product/components/ProdQueryOpt.vue    |   61 +++
 11 files changed, 768 insertions(+), 316 deletions(-)

diff --git a/src/api/index.js b/src/api/index.js
index 766ad71..7b8275a 100644
--- a/src/api/index.js
+++ b/src/api/index.js
@@ -13,7 +13,8 @@
 let ip2_file = 'https://fyami.com.cn/';
 
 if (debug) {
-  ip1 = 'http://192.168.0.103:9001/';
+  // ip1 = 'http://192.168.0.103:9001/';
+  ip1 = 'http://localhost:9001/';
   // ip1_file = 'http://192.168.0.138:8080/';
   // ip2 = 'http://192.168.0.138:8080/';
   // ip2_file = 'https://fyami.com.cn/';
diff --git a/src/components.d.ts b/src/components.d.ts
index 15e5c5a..6076c52 100644
--- a/src/components.d.ts
+++ b/src/components.d.ts
@@ -20,7 +20,6 @@
     ElBreadcrumb: typeof import('element-plus/es')['ElBreadcrumb']
     ElBreadcrumbItem: typeof import('element-plus/es')['ElBreadcrumbItem']
     ElButton: typeof import('element-plus/es')['ElButton']
-    ElButtonGroup: typeof import('element-plus/es')['ElButtonGroup']
     ElCalendar: typeof import('element-plus/es')['ElCalendar']
     ElCard: typeof import('element-plus/es')['ElCard']
     ElCascader: typeof import('element-plus/es')['ElCascader']
@@ -37,9 +36,6 @@
     ElDialog: typeof import('element-plus/es')['ElDialog']
     ElDivider: typeof import('element-plus/es')['ElDivider']
     ElDrawer: typeof import('element-plus/es')['ElDrawer']
-    ElDropdown: typeof import('element-plus/es')['ElDropdown']
-    ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem']
-    ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu']
     ElEmpty: typeof import('element-plus/es')['ElEmpty']
     ElForm: typeof import('element-plus/es')['ElForm']
     ElFormItem: typeof import('element-plus/es')['ElFormItem']
@@ -55,16 +51,13 @@
     ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
     ElMenuItemGroup: typeof import('element-plus/es')['ElMenuItemGroup']
     ElOption: typeof import('element-plus/es')['ElOption']
-    ElPageHeader: typeof import('element-plus/es')['ElPageHeader']
     ElPagination: typeof import('element-plus/es')['ElPagination']
-    ElPopconfirm: typeof import('element-plus/es')['ElPopconfirm']
     ElPopover: typeof import('element-plus/es')['ElPopover']
     ElRadio: typeof import('element-plus/es')['ElRadio']
     ElRadioButton: typeof import('element-plus/es')['ElRadioButton']
     ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
     ElRow: typeof import('element-plus/es')['ElRow']
     ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
-    ElSegmented: typeof import('element-plus/es')['ElSegmented']
     ElSelect: typeof import('element-plus/es')['ElSelect']
     ElSpace: typeof import('element-plus/es')['ElSpace']
     ElStep: typeof import('element-plus/es')['ElStep']
@@ -78,7 +71,6 @@
     ElTag: typeof import('element-plus/es')['ElTag']
     ElText: typeof import('element-plus/es')['ElText']
     ElTooltip: typeof import('element-plus/es')['ElTooltip']
-    ElTransfer: typeof import('element-plus/es')['ElTransfer']
     ElTree: typeof import('element-plus/es')['ElTree']
     ElUpload: typeof import('element-plus/es')['ElUpload']
     Footer: typeof import('./components/core/Footer.vue')['default']
diff --git a/src/components/SearchBar.vue b/src/components/SearchBar.vue
index 83835cb..c3609f4 100644
--- a/src/components/SearchBar.vue
+++ b/src/components/SearchBar.vue
@@ -22,7 +22,7 @@
           :type="2"
           v-model:value="formSearch.scenetype"
         ></FYOptionScene>
-        <el-form-item>
+        <el-form-item v-show="btnShow">
           <el-button type="primary" @click="onSubmit">鏌ヨ</el-button>
         </el-form-item>
       </el-form>
@@ -40,6 +40,17 @@
 
 export default {
   emits: ['onSubmit'],
+  props: {
+    btnShow: {
+      type: Boolean,
+      default: true
+    },
+    init: {
+      type: Boolean,
+      default: true
+    }
+  },
+
   data() {
     return {
       topTasks: [],
@@ -62,7 +73,9 @@
         });
         this.topTasks = list;
         this.formSearch.topTaskId = list[0].value;
-        this.onSubmit();
+        if (this.init) {
+          this.onSubmit();
+        }
       });
     },
     //鏌ヨ瀛愪换鍔$粺璁′俊鎭�
@@ -81,7 +94,8 @@
   },
   mounted() {
     this.getOptions();
-  }
+  },
+  expose: ['onSubmit']
 };
 </script>
 
diff --git a/src/components/core/Content.vue b/src/components/core/Content.vue
index 9ea18ea..1eaa98f 100644
--- a/src/components/core/Content.vue
+++ b/src/components/core/Content.vue
@@ -5,17 +5,21 @@
       <component
         v-if="route.meta.keepAlive"
         :is="Component"
-        :key="route.name"
+        :key="route.meta.key ? route.meta.key : route.name"
       />
     </keep-alive>
-    <component v-if="!route.meta.keepAlive" :is="Component" :key="route.name" />
+    <component
+      v-if="!route.meta.keepAlive"
+      :is="Component"
+      :key="route.meta.key ? route.meta.key : route.name"
+    />
     <!-- </transition> -->
   </router-view>
 </template>
 
 <script>
 export default {
-  name: 'CoreContent',
+  name: 'CoreContent'
 };
 </script>
 <style scoped></style>
diff --git a/src/constants/menu.js b/src/constants/menu.js
index 2c2b22b..767b029 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: '鍦烘櫙淇℃伅'
       }
@@ -48,22 +48,22 @@
     name: '鍩虹鏁版嵁浜у搧',
     children: [
       {
-        path: 'fysp/data-product/base/home/scene',
+        path: '/fysp/data-product/base/home/scene',
         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: '瀵瑰鏀寔'
   },
@@ -215,12 +215,12 @@
   //   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 copy.js b/src/router/index copy.js
new file mode 100644
index 0000000..fa7bcf8
--- /dev/null
+++ b/src/router/index copy.js
@@ -0,0 +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';
+
+const routes = [
+  {
+    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: '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: '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);
+// eslint-disable-next-line no-unused-vars
+router.afterEach((to, from) => {
+  loadingStore.clearLoading();
+});
+
+export { router, routes };
diff --git a/src/router/index.js b/src/router/index.js
index fa7bcf8..925417d 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -13,229 +13,262 @@
     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: 'ProdManage',
-        path: 'fysp/data-product/base/home',
-        component: () =>
-          import('@/views/fysp/data-product/base-data-product/ProdManage.vue'),
+        name: 'fysp',
+        path: 'fysp',
         children: [
+          // {
+          //   //鏁存敼瀹℃牳
+          //   name: 'changecheck',
+          //   path: '/changecheck',
+          //   component: () => import('@/views/check/ChangeCheck.vue')
+          // },
+          /**********************************椋炵窘鐩戠***********************************************/
           {
-            // 鍩虹浜у搧-鍦烘櫙娓呭崟
-            path: 'scene',
-            name: 'ProdSceneInfo',
-            meta: { keepAlive: true },
-            component: () =>
-              import(
-                '@/views/fysp/data-product/base-data-product/ProdSceneInfo.vue'
-              )
+            //闂瀹℃牳
+            name: 'procheck',
+            path: 'procheck',
+            component: () => import('@/views/fysp/check/ProCheck.vue')
           },
           {
-            // 鍩虹浜у搧-瑙勮寖鎬ц瘎浼�
-            path: 'evaluate',
-            name: 'ProdEvaluationInfo',
-            meta: { keepAlive: true },
-            component: () =>
-              import(
-                '@/views/fysp/data-product/base-data-product/ProdEvaluationInfo.vue'
-              )
+            name: 'data-product',
+            path: 'data-product',
+            children: [
+              {
+                //闂鍔ㄦ�佽窡韪�
+                name: 'profollow',
+                path: 'profollow',
+                component: () =>
+                  import('@/views/fysp/data-product/ProdProFollow.vue')
+              },
+              {
+                //闂鏁存敼鍒嗘瀽
+                name: 'proanalysis',
+                path: 'proanalysis',
+                component: () =>
+                  import('@/views/fysp/data-product/ProdProAnalysis.vue')
+              },
+              {
+                //瑙勮寖鎬ц瘎浼�
+                name: 'standardjudge',
+                path: 'standardjudge',
+                component: () =>
+                  import('@/views/fysp/data-product/ProdStandardJudge.vue')
+              },
+              {
+                //鏃ユ姤绠$悊
+                name: 'dailyreport',
+                path: 'dailyreport',
+                component: () =>
+                  import('@/views/fysp/data-product/ProdDailyReport.vue')
+              },
+              {
+                //鍦烘櫙鎶ュ憡
+                name: 'scenereport',
+                path: 'scenereport',
+                component: () =>
+                  import('@/views/fysp/data-product/ProdSceneReport.vue')
+              },
+              {
+                //鍦烘櫙鎶ュ憡
+                name: 'lawenforcelist',
+                path: 'lawenforcelist',
+                component: () =>
+                  import('@/views/fysp/data-product/ProdLawEnforceList.vue')
+              },
+              {
+                name: 'dataProdBase',
+                path: 'base',
+                children: [
+                  {
+                    // 鍩虹浜у搧-绠$悊
+                    name: 'ProdManage',
+                    path: 'home',
+                    component: () =>
+                      import(
+                        '@/views/fysp/data-product/base-data-product/ProdManage.vue'
+                      ),
+                    children: [
+                      {
+                        // 鍩虹浜у搧-鍦烘櫙娓呭崟
+                        path: 'scene',
+                        name: 'ProdSceneInfo',
+                        meta: { keepAlive: true, key: 'ProdManage' },
+                        component: () =>
+                          import(
+                            '@/views/fysp/data-product/base-data-product/ProdSceneInfo.vue'
+                          )
+                      },
+                      {
+                        // 鍩虹浜у搧-瑙勮寖鎬ц瘎浼�
+                        path: 'evaluate',
+                        name: 'ProdEvaluationInfo',
+                        meta: { keepAlive: true, key: 'ProdManage' },
+                        component: () =>
+                          import(
+                            '@/views/fysp/data-product/base-data-product/ProdEvaluationInfo.vue'
+                          )
+                      },
+                      {
+                        // 鍩虹浜у搧-宸℃煡淇℃伅
+                        path: 'inspection',
+                        name: 'ProdInspectionInfo',
+                        meta: { keepAlive: true, key: 'ProdManage' },
+                        component: () =>
+                          import(
+                            '@/views/fysp/data-product/base-data-product/ProdInspectionInfo.vue'
+                          )
+                      },
+                      {
+                        // 鍩虹浜у搧-鐩戞祴鏁版嵁
+                        path: 'monitordata',
+                        name: 'ProdMonitorDataInfo',
+                        meta: { keepAlive: true, key: 'ProdManage' },
+                        component: () =>
+                          import(
+                            '@/views/fysp/data-product/base-data-product/ProdMonitorDataInfo.vue'
+                          )
+                      }
+                    ]
+                  },
+                  {
+                    // 鍩虹浜у搧-闂澶嶅彂娓呭崟
+                    name: 'PordProblemRecurrence',
+                    path: 'PordProblemRecurrence',
+                    component: () =>
+                      import(
+                        '@/views/fysp/data-product/base-data-product/PordProblemRecurrence.vue'
+                      )
+                  }
+                ]
+              }
+            ]
           },
           {
-            // 鍩虹浜у搧-宸℃煡淇℃伅
-            path: 'inspection',
-            name: 'ProdInspectionInfo',
-            meta: { keepAlive: true },
-            component: () =>
-              import(
-                '@/views/fysp/data-product/base-data-product/ProdInspectionInfo.vue'
-              )
+            name: 'task',
+            path: 'task',
+            children: [
+              {
+                //鐩戠浠诲姟
+                name: 'taskmanage',
+                path: 'manage',
+                component: () => import('@/views/fysp/task/TaskManage.vue'),
+                meta: { keepAlive: true }
+              },
+              {
+                //鐩戠浠诲姟鍦烘櫙缂栬緫
+                name: 'monitorObjEdit',
+                path: 'edit',
+                component: () => import('@/views/fysp/task/MonitorObjEdit.vue')
+              },
+              {
+                name: 'plan',
+                path: 'plan',
+                children: [
+                  {
+                    //鐩戠浠诲姟璁″垝缂栬緫
+                    name: 'monitorPlanEdit',
+                    path: 'edit',
+                    component: () =>
+                      import('@/views/fysp/task/MonitorPlanEdit.vue')
+                  }
+                ]
+              },
+
+              {
+                //鐩戠浠诲姟璁″垝缂栬緫
+                name: 'monitorTaskCreate',
+                path: 'create',
+                component: () =>
+                  import('@/views/fysp/task/MonitorTaskCreate.vue')
+              }
+            ]
+          },
+
+          // {
+          //   //璐︽埛绠$悊
+          //   name: 'fyspUser',
+          //   path: 'userInfo',
+          //   component: () => import('@/views/baseinfo/fysp/user/UserInfo.vue')
+          // },
+          {
+            //鐩戠闂
+            name: 'config',
+            path: 'config',
+            children: [
+              {
+                //鐩戠闂
+                name: 'fyspProblemType',
+                path: 'problemType',
+                component: () => import('@/views/fysp/config/ProblemType.vue')
+              },
+              {
+                //璁惧鍖归厤
+                name: 'fyspDeviceMatch',
+                path: 'deviceMatch',
+                component: () => import('@/views/fysp/config/DeviceMatch.vue')
+              },
+              {
+                //璇勪及瑙勫垯绠$悊
+                name: 'fyspEvalutationRule',
+                path: 'evalutationRule',
+                component: () =>
+                  import('@/views/fysp/config/EvalutationRule.vue')
+              }
+            ]
           },
           {
-            // 鍩虹浜у搧-鐩戞祴鏁版嵁
-            path: 'monitordata',
-            name: 'ProdMonitorDataInfo',
-            meta: { keepAlive: true },
-            component: () =>
-              import(
-                '@/views/fysp/data-product/base-data-product/ProdMonitorDataInfo.vue'
-              )
+            //璇勪及鏁版嵁婧�
+            name: 'evaluation',
+            path: 'evaluation',
+            children: [
+              {
+                //璇勪及鏁版嵁婧�
+                name: 'fyspEvalutationTask',
+                path: 'evalutationTask',
+                component: () =>
+                  import('@/views/fysp/evaluation/EvalutationTask.vue'),
+                meta: { keepAlive: false }
+              },
+              {
+                //璇勪及绠$悊
+                name: 'fyspEvalutationRecord',
+                path: 'evalutationRecord',
+                component: () =>
+                  import('@/views/fysp/evaluation/EvalutationRecord.vue'),
+                meta: { keepAlive: true }
+              },
+              {
+                //璇勪及缁撴灉璇︽儏
+                name: 'fyspEvalutationEdit',
+                path: 'evalutationEdit/:subTaskId',
+                component: () =>
+                  import('@/views/fysp/evaluation/EvalutationEdit.vue')
+              }
+            ]
+          },
+
+          {
+            //鍦烘櫙淇℃伅
+            name: 'fyspSceneInfo',
+            path: 'sceneInfo',
+            component: () => import('@/views/fysp/scene/SceneInfo.vue'),
+            meta: { keepAlive: true }
+          },
+          {
+            //鍦烘櫙缂栬緫
+            name: 'fyspSceneEdit',
+            path: 'sceneEdit/:sid',
+            component: () => import('@/views/fysp/scene/SceneEdit.vue'),
+            meta: { transition: 'slide-left' }
+          },
+          {
+            //瀵瑰鏀寔
+            name: 'fyspSupport',
+            path: 'support',
+            component: () => import('@/views/fysp/support/JingAnSupport.vue')
           }
         ]
-      },
-      {
-        // 鍩虹浜у搧-闂澶嶅彂娓呭崟
-        name: 'PordProblemRecurrence',
-        path: 'fysp/data-product/base/PordProblemRecurrence',
-        component: () =>
-          import(
-            '@/views/fysp/data-product/base-data-product/PordProblemRecurrence.vue'
-          )
       },
 
       /**********************************椋炵窘鐜***********************************************/
@@ -290,8 +323,8 @@
 ];
 
 const router = createRouter({
-  // history: createWebHistory(import.meta.env.BASE_URL)
-  history: createWebHashHistory(),
+  history: createWebHistory(import.meta.env.BASE_URL),
+  // history: createWebHashHistory(),
   routes: routes
 });
 
diff --git a/src/views/fysp/data-product/base-data-product/ProdManage.vue b/src/views/fysp/data-product/base-data-product/ProdManage.vue
index 8d04a34..8ca321f 100644
--- a/src/views/fysp/data-product/base-data-product/ProdManage.vue
+++ b/src/views/fysp/data-product/base-data-product/ProdManage.vue
@@ -1,22 +1,18 @@
 <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>
+  <el-menu
+    default-active="scene"
+    ellipsis
+    mode="horizontal"
+    style="max-width: 600px"
+  >
+    <el-menu-item
+      v-for="item in menu"
+      :key="item.path"
+      :index="item.path"
+      @click="navPage"
+      >{{ item.name }}</el-menu-item
+    >
+  </el-menu>
   <router-view v-slot="{ Component, route }">
     <keep-alive>
       <component
@@ -54,55 +50,13 @@
     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>
+<style scoped></style>
diff --git a/src/views/fysp/data-product/base-data-product/ProdSceneInfo.vue b/src/views/fysp/data-product/base-data-product/ProdSceneInfo.vue
index 6c8ee7c..7412ddf 100644
--- a/src/views/fysp/data-product/base-data-product/ProdSceneInfo.vue
+++ b/src/views/fysp/data-product/base-data-product/ProdSceneInfo.vue
@@ -1,4 +1,31 @@
 <template>
-  ProdSceneInfo
+  <BaseProdProcess :active="active">
+    <template #step1>
+      <ProdQueryOpt :loading="loading" @submit="onSearch"> </ProdQueryOpt>
+    </template>
+    <template #step2></template>
+    <template #step3></template>
+  </BaseProdProcess>
 </template>
-<script></script>
\ No newline at end of file
+<script setup>
+import { ref } from 'vue';
+import BaseProdProcess from '@/views/fysp/data-product/base-data-product/components/BaseProdProcess.vue';
+import ProdQueryOpt from '@/views/fysp/data-product/base-data-product/components/ProdQueryOpt.vue';
+
+const active = ref(1);
+const loading = ref(false)
+
+function changeActive() {
+  active.value++;
+  active.value = active.value > 3 ? 1 : active.value;
+}
+
+function onSearch(opt) {
+  console.log(opt);
+  loading.value = true;
+  setTimeout(() => {
+    changeActive()
+    loading.value = false;
+  }, 1000);
+}
+</script>
diff --git a/src/views/fysp/data-product/base-data-product/components/BaseProdProcess.vue b/src/views/fysp/data-product/base-data-product/components/BaseProdProcess.vue
new file mode 100644
index 0000000..fb18256
--- /dev/null
+++ b/src/views/fysp/data-product/base-data-product/components/BaseProdProcess.vue
@@ -0,0 +1,62 @@
+<template>
+  <!-- <el-button type="primary" @click="changeActive">change</el-button> -->
+  <!-- <el-row>
+    <el-col
+      :span="active == 1 ? 16 : 4"
+      :class="active == 1 ? 'prod-active' : 'prod-inactive'"
+    >step1</el-col>
+    <el-col
+      :span="active == 2 ? 16 : 4"
+      :class="active == 2 ? 'prod-active' : 'prod-inactive'"
+    >step2</el-col>
+    <el-col
+      :span="active == 3 ? 16 : 4"
+      :class="active == 3 ? 'prod-active' : 'prod-inactive'"
+    >step3</el-col>
+  </el-row> -->
+  <el-row>
+    <div :class="active == 1 ? 'prod-active' : 'prod-inactive'">
+        <slot name="step1"></slot>
+    </div>
+    <div :class="active == 2 ? 'prod-active' : 'prod-inactive'">
+        <slot name="step2"></slot>
+    </div>
+    <div :class="active == 3 ? 'prod-active' : 'prod-inactive'">
+        <slot name="step3"></slot>
+    </div>
+  </el-row>
+</template>
+<script setup>
+import { ref } from 'vue';
+
+const props = defineProps({
+  active: {
+    type: Number,
+    default: 1
+  }
+});
+
+// function changeActive() {
+//   active.value++;
+//   active.value = active.value > 3 ? 1 : active.value;
+// }
+</script>
+<style scoped>
+.prod-active {
+  width: 66.667%;
+  transition: width 0.5s ease;
+  background-color: #409eff;
+  color: white;
+  margin: 5px 0;
+  border-radius: 4px;
+}
+
+.prod-inactive {
+  width: 16.667%;
+  transition: width 0.5s ease;
+  background-color: #e4e7ed;
+  color: #606266;
+  margin: 5px 0;
+  border-radius: 4px;
+}
+</style>
diff --git a/src/views/fysp/data-product/base-data-product/components/ProdQueryOpt.vue b/src/views/fysp/data-product/base-data-product/components/ProdQueryOpt.vue
new file mode 100644
index 0000000..55ed176
--- /dev/null
+++ b/src/views/fysp/data-product/base-data-product/components/ProdQueryOpt.vue
@@ -0,0 +1,61 @@
+<template>
+  <el-card shadow="never">
+    <template #header>
+      <div><el-text tag="b" size="large">浜у搧鐢熸垚閫夐」</el-text></div>
+    </template>
+    <SearchBar
+      ref="refSearchBar"
+      :btn-show="false"
+      :init="false"
+      @on-submit="search"
+    >
+    </SearchBar>
+    <template #footer>
+      <el-row justify="space-around">
+        <el-button
+          type="primary"
+          size="default"
+          :loading="loading"
+          @click="submit"
+          >鐢熸垚</el-button
+        >
+      </el-row>
+    </template>
+  </el-card>
+</template>
+<script setup>
+import { ref, computed } from 'vue';
+import dayjs from 'dayjs';
+
+const props = defineProps({
+  loading: {
+    type: Boolean,
+    default: false
+  }
+});
+const emit = defineEmits(['submit']);
+
+const refSearchBar = ref(null);
+
+const submit = () => {
+  refSearchBar.value.onSubmit();
+};
+
+const search = (options) => {
+  const opt = {
+    topTaskId: options.topTask.tguid,
+    provinceCode: options.topTask.provincecode,
+    cityCode: options.topTask.citycode,
+    districtCode: options.topTask.districtcode,
+    townCode: options.topTask.towncode,
+    startTime: dayjs(options.topTask.starttime).format('YYYY-MM-DD HH:mm:ss'),
+    endTime: dayjs(options.topTask.endtime)
+      .add(1, 'day')
+      .add(-1, 'second')
+      .format('YYYY-MM-DD HH:mm:ss'),
+    sceneTypeId: options.sceneTypeId,
+    needCache: true
+  };
+  emit('submit', opt);
+};
+</script>

--
Gitblit v1.9.3