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