diff --git a/src/router/route.ts b/src/router/route.ts index 2f749c1..72d5b7e 100644 --- a/src/router/route.ts +++ b/src/router/route.ts @@ -125,6 +125,58 @@ export const systemRoutes: RouteRecordRaw[] = [ // }, ], }, +/* 任务管理中心路由 */ +{ + path: '/task', + name: 'TaskManagement', + component: Layout, + redirect: '/task/publish', // 默认跳转至发布任务页面 + meta: { + title: '任务管理', + icon: 'quote', // 任务相关图标 + hidden: false, + sort: 3 // 排序值,控制菜单显示顺序 + }, + children: [ + { + path: '/task/publish', + name: 'TaskPublish', + component: () => import('@/views/task/task-publish/TaskPublish.vue'), + meta: { + title: '发布任务', + icon: 'plus-circle', // 发布相关图标 + hidden: false, + sort: 3.25 + } + }, + { + path: '/task/progress', + name: 'TaskProgress', + component: () => import('@/views/task/task-progress/TaskProgress.vue'), + meta: { + title: '任务跟踪', + icon: 'redo', // 进度相关图标 + hidden: false, + sort: 3.5 + } + } + , + { + path: '/task/approval', + name: 'TaskApproval', + component: () => import('@/views/task/task-approval/TaskApproval.vue'), + meta: { + title: '任务审批', + icon: 'plus-circle', // 发布相关图标 + hidden: false, + sort: 3.75 + } + }, + ] +}, + + + // { // path: '/organization', // name: 'Organization', @@ -831,7 +883,7 @@ export const systemRoutes: RouteRecordRaw[] = [ ], }, - //项目中控台 + // 项目中控台 { path: '/project-management/projects/personnel-dispatch', name: 'PersonnelDispatch', @@ -842,7 +894,6 @@ export const systemRoutes: RouteRecordRaw[] = [ hidden: false, }, }, - { path: '/project-management/personnel-dispatch/construction-personnel', name: 'ConstructionPersonnel', @@ -855,13 +906,133 @@ export const systemRoutes: RouteRecordRaw[] = [ }, ], }, + // start + // 数据管理 + { + path: '/data-management', + name: 'DataManagement', + component: Layout, + redirect: '/data-management/project-management/project-template', + meta: { title: '数据管理', icon: 'database', hidden: false, sort: 4 }, + children: [ + { + // path: '/construction-operation-platform/implementation-workflow/data-processing', + // name: 'DataProcessing', + // component: () => import('@/components/ParentView/index.vue'), + // redirect: '/construction-operation-platform/implementation-workflow/data-processing/data-storage', + // meta: { title: '我的业务数据', icon: 'filter', hidden: false }, + // children: [ + // { + // path: '/construction-operation-platform/implementation-workflow/data-processing/data-storage', + // name: 'DataStorage', + // component: () => import('@/components/ParentView/index.vue'), + // redirect: '/construction-operation-platform/implementation-workflow/data-processing/data-storage/raw-data', + // meta: { title: '原数据管理', icon: 'database', hidden: false }, + // children: [ + // { + path: '/construction-operation-platform/implementation-workflow/data-processing/data-storage/raw-data', + name: 'RawData', + component: () => import('@/views/operation-platform/data-processing/data-storage/index.vue'), + meta: { title: '原数据管理', icon: 'file', hidden: false }, + }, + // { + // path: '/construction-operation-platform/implementation-workflow/data-processing/data-storage/attachment', + // name: 'AttachmentManagement', + // component: () => import('@/views/construction-operation-platform/implementation-workflow/data-processing/data-storage/index.vue'), + // meta: { title: '附件管理', icon: 'attachment', hidden: false }, + // }, + // { + // path: '/construction-operation-platform/implementation-workflow/data-processing/model-config', + // name: 'ModelConfig', + // component: () => import('@/views/construction-operation-platform/implementation-workflow/data-processing/model-config/index.vue'), + // meta: { title: '模型配置', icon: 'robot', hidden: false }, + // }, + // ], + // }, + { + path: '/construction-operation-platform/implementation-workflow/data-processing/data-storage/preprocessed-data', + name: 'PreprocessedData', + component: () => import('@/components/ParentView/index.vue'), + redirect: '/construction-operation-platform/implementation-workflow/data-processing/data-storage', + meta: { title: '数据预处理', icon: 'filter', hidden: false }, + children: [ + { + path: '/construction-operation-platform/implementation-workflow/data-processing/data-storage/preprocessed-data/ImageBatchUpload', + name: 'ImageBatchUpload', + component: () => import('@/views/construction-operation-platform/implementation-workflow/data-processing/data-preprocessing/index.vue'), + meta: { title: '批量上传', icon: 'file', hidden: false }, + }, + { + path: '/construction-operation-platform/implementation-workflow/data-processing/data-storage/preprocessed-data/ImageSorting', + name: 'ImageSorting', + component: () => import('@/views/construction-operation-platform/implementation-workflow/data-processing/image-sorting/index.vue'), + meta: { title: '图像分拣', icon: 'attachment', hidden: false }, + }, + ], + }, + { + path: '/construction-operation-platform/implementation-workflow/data-processing/intelligent-inspection', + name: 'IntelligentInspection', + component: () => import('@/components/ParentView/index.vue'), + redirect: '/construction-operation-platform/implementation-workflow/data-processing/intelligent-inspection/defect-algorithm', + meta: { title: '数据分析与图像检测', icon: 'scan', hidden: false }, + children: [ + { + path: '/construction-operation-platform/implementation-workflow/data-processing/intelligent-inspection/defect-algorithm', + name: 'DefectAlgorithm', + component: () => import('@/views/construction-operation-platform/implementation-workflow/data-processing/intelligent-inspection/defect-algorithm/index.vue'), + meta: { title: '缺陷检测', icon: 'code', hidden: false }, + }, + { + path: '/construction-operation-platform/implementation-workflow/data-processing/intelligent-inspection/report-generation', + name: 'ReportGeneration', + component: () => import('@/views/project-operation-platform/data-processing/report-generation/index.vue'), + meta: { title: '报告生成', icon: 'file-add', hidden: false }, + }, + { + path: '/construction-operation-platform/implementation-workflow/data-processing/intelligent-inspection/standard-info', + name: 'StandardInfo', + component: () => import('@/views/project-operation-platform/data-processing/standard-info/index.vue'), + meta: { title: '标准信息库', icon: 'book', hidden: false }, + }, + { + path: '/construction-operation-platform/implementation-workflow/data-processing/intelligent-inspection/report-review', + name: 'ReportReview', + component: () => import('@/views/project-operation-platform/data-processing/report-review/index.vue'), + meta: { title: '报告修改审核', icon: 'audit', hidden: false }, + }, + { + path: '/construction-operation-platform/implementation-workflow/data-processing/intelligent-inspection/lifecycle-management', + name: 'LifecycleManagement', + component: () => import('@/views/project-operation-platform/lifecycle-management/index.vue'), + meta: { title: '全生命周期管理', icon: 'reload', hidden: false }, + }, + { + path: '/construction-operation-platform/implementation-workflow/data-processing/intelligent-inspection/drone-services', + name: 'DroneServices', + component: () => import('@/views/project-operation-platform/route-planning/index.vue'), + meta: { title: '无人机云服务', icon: 'cloud-server', hidden: false }, + }, + // { + // path: '/construction-operation-platform/implementation-workflow/airport-management', + // name: 'AirportManagement', + // component: () => import('@/views/construction-operation-platform/airport-management/index.vue'), + // meta: { title: '机场管理', icon: 'rocket', hidden: false }, + // }, + ], + // }, + // ], + }, + ], + }, + // end { path: '/construction-operation-platform', name: 'ConstructionOperationPlatform', component: Layout, redirect: '/construction-operation-platform/implementation-workflow/field-construction', - meta: { title: '施工操作台', icon: 'tool', hidden: false, sort: 5 }, + meta: { title: '我的工作台', icon: 'tool', hidden: false, sort: 5 }, children: [ // { // path: '/construction-operation-platform/implementation-workflow', @@ -870,6 +1041,18 @@ export const systemRoutes: RouteRecordRaw[] = [ // redirect: '/construction-operation-platform/implementation-workflow/field-construction', // meta: { title: '项目实施工作流程', icon: 'fork', hidden: false }, // children: [ + { + path: '/construction-operation-platform/implementation-workflow/data-processing/data-storage/attachment', + name: 'AttachmentManagement', + component: () => import('@/views/construction-operation-platform/implementation-workflow/data-processing/data-storage/index.vue'), + meta: { title: '附件管理', icon: 'attachment', hidden: false }, + }, + { + path: '/construction-operation-platform/implementation-workflow/data-processing/model-config', + name: 'ModelConfig', + component: () => import('@/views/construction-operation-platform/implementation-workflow/data-processing/model-config/index.vue'), + meta: { title: '模型配置', icon: 'robot', hidden: false }, + }, { path: '/construction-operation-platform/implementation-workflow/field-construction', name: 'FieldConstruction', @@ -893,115 +1076,6 @@ export const systemRoutes: RouteRecordRaw[] = [ component: () => import('@/views/project-operation-platform/implementation-workflow/field-construction/project-list/index.vue'), meta: { title: '我的施工', icon: 'tool', hidden: false }, }, - { - path: '/construction-operation-platform/implementation-workflow/data-processing', - name: 'DataProcessing', - component: () => import('@/components/ParentView/index.vue'), - redirect: '/construction-operation-platform/implementation-workflow/data-processing/data-storage', - meta: { title: '我的业务数据', icon: 'filter', hidden: false }, - children: [ - { - path: '/construction-operation-platform/implementation-workflow/data-processing/data-storage', - name: 'DataStorage', - component: () => import('@/components/ParentView/index.vue'), - redirect: '/construction-operation-platform/implementation-workflow/data-processing/data-storage/raw-data', - meta: { title: '原数据管理', icon: 'database', hidden: false }, - children: [ - { - path: '/construction-operation-platform/implementation-workflow/data-processing/data-storage/raw-data', - name: 'RawData', - component: () => import('@/views/operation-platform/data-processing/data-storage/index.vue'), - meta: { title: '原数据管理', icon: 'file', hidden: false }, - }, - { - path: '/construction-operation-platform/implementation-workflow/data-processing/data-storage/attachment', - name: 'AttachmentManagement', - component: () => import('@/views/construction-operation-platform/implementation-workflow/data-processing/data-storage/index.vue'), - meta: { title: '附件管理', icon: 'attachment', hidden: false }, - }, - { - path: '/construction-operation-platform/implementation-workflow/data-processing/model-config', - name: 'ModelConfig', - component: () => import('@/views/construction-operation-platform/implementation-workflow/data-processing/model-config/index.vue'), - meta: { title: '模型配置', icon: 'robot', hidden: false }, - }, - - ], - }, - { - path: '/construction-operation-platform/implementation-workflow/data-processing/data-storage/preprocessed-data', - name: 'PreprocessedData', - component: () => import('@/components/ParentView/index.vue'), - redirect: '/construction-operation-platform/implementation-workflow/data-processing/data-storage', - meta: { title: '数据预处理', icon: 'filter', hidden: false }, - children: [ - { - path: '/construction-operation-platform/implementation-workflow/data-processing/data-storage/preprocessed-data/ImageBatchUpload', - name: 'ImageBatchUpload', - component: () => import('@/views/construction-operation-platform/implementation-workflow/data-processing/data-preprocessing/index.vue'), - meta: { title: '批量上传', icon: 'file', hidden: false }, - }, - { - path: '/construction-operation-platform/implementation-workflow/data-processing/data-storage/preprocessed-data/ImageSorting', - name: 'ImageSorting', - component: () => import('@/views/construction-operation-platform/implementation-workflow/data-processing/image-sorting/index.vue'), - meta: { title: '图像分拣', icon: 'attachment', hidden: false }, - }, - ], - }, - { - path: '/construction-operation-platform/implementation-workflow/data-processing/intelligent-inspection', - name: 'IntelligentInspection', - component: () => import('@/components/ParentView/index.vue'), - redirect: '/construction-operation-platform/implementation-workflow/data-processing/intelligent-inspection/defect-algorithm', - meta: { title: '数据分析与图像检测', icon: 'scan', hidden: false }, - children: [ - { - path: '/construction-operation-platform/implementation-workflow/data-processing/intelligent-inspection/defect-algorithm', - name: 'DefectAlgorithm', - component: () => import('@/views/construction-operation-platform/implementation-workflow/data-processing/intelligent-inspection/defect-algorithm/index.vue'), - meta: { title: '缺陷检测', icon: 'code', hidden: false }, - }, - { - path: '/construction-operation-platform/implementation-workflow/data-processing/intelligent-inspection/report-generation', - name: 'ReportGeneration', - component: () => import('@/views/project-operation-platform/data-processing/report-generation/index.vue'), - meta: { title: '报告生成', icon: 'file-add', hidden: false }, - }, - { - path: '/construction-operation-platform/implementation-workflow/data-processing/intelligent-inspection/standard-info', - name: 'StandardInfo', - component: () => import('@/views/project-operation-platform/data-processing/standard-info/index.vue'), - meta: { title: '标准信息库', icon: 'book', hidden: false }, - }, - { - path: '/construction-operation-platform/implementation-workflow/data-processing/intelligent-inspection/report-review', - name: 'ReportReview', - component: () => import('@/views/project-operation-platform/data-processing/report-review/index.vue'), - meta: { title: '报告修改审核', icon: 'audit', hidden: false }, - }, - { - path: '/construction-operation-platform/implementation-workflow/data-processing/intelligent-inspection/lifecycle-management', - name: 'LifecycleManagement', - component: () => import('@/views/project-operation-platform/lifecycle-management/index.vue'), - meta: { title: '全生命周期管理', icon: 'reload', hidden: false }, - }, - { - path: '/construction-operation-platform/implementation-workflow/data-processing/intelligent-inspection/drone-services', - name: 'DroneServices', - component: () => import('@/views/project-operation-platform/route-planning/index.vue'), - meta: { title: '无人机云服务', icon: 'cloud-server', hidden: false }, - }, - // { - // path: '/construction-operation-platform/implementation-workflow/airport-management', - // name: 'AirportManagement', - // component: () => import('@/views/construction-operation-platform/airport-management/index.vue'), - // meta: { title: '机场管理', icon: 'rocket', hidden: false }, - // }, - ], - }, - ], - }, { path: '/construction-operation-platform/implementation-workflow/project-delivery', name: 'ProjectDelivery', diff --git a/src/types/components.d.ts b/src/types/components.d.ts index 7fa6b1b..a427ece 100644 --- a/src/types/components.d.ts +++ b/src/types/components.d.ts @@ -7,7 +7,70 @@ export {} declare module 'vue' { export interface GlobalComponents { + ApprovalAssistant: typeof import('./../components/ApprovalAssistant/index.vue')['default'] + ApprovalMessageItem: typeof import('./../components/NotificationCenter/ApprovalMessageItem.vue')['default'] + Avatar: typeof import('./../components/Avatar/index.vue')['default'] + Breadcrumb: typeof import('./../components/Breadcrumb/index.vue')['default'] + CellCopy: typeof import('./../components/CellCopy/index.vue')['default'] + Chart: typeof import('./../components/Chart/index.vue')['default'] + CircularProgress: typeof import('./../components/CircularProgress/index.vue')['default'] + ColumnSetting: typeof import('./../components/GiTable/src/components/ColumnSetting.vue')['default'] + CronForm: typeof import('./../components/GenCron/CronForm/index.vue')['default'] + CronModal: typeof import('./../components/GenCron/CronModal/index.vue')['default'] + DateRangePicker: typeof import('./../components/DateRangePicker/index.vue')['default'] + DayForm: typeof import('./../components/GenCron/CronForm/component/day-form.vue')['default'] + FilePreview: typeof import('./../components/FilePreview/index.vue')['default'] + GiCellAvatar: typeof import('./../components/GiCell/GiCellAvatar.vue')['default'] + GiCellGender: typeof import('./../components/GiCell/GiCellGender.vue')['default'] + GiCellStatus: typeof import('./../components/GiCell/GiCellStatus.vue')['default'] + GiCellTag: typeof import('./../components/GiCell/GiCellTag.vue')['default'] + GiCellTags: typeof import('./../components/GiCell/GiCellTags.vue')['default'] + GiCodeView: typeof import('./../components/GiCodeView/index.vue')['default'] + GiDot: typeof import('./../components/GiDot/index.tsx')['default'] + GiEditTable: typeof import('./../components/GiEditTable/GiEditTable.vue')['default'] + GiFooter: typeof import('./../components/GiFooter/index.vue')['default'] + GiForm: typeof import('./../components/GiForm/src/GiForm.vue')['default'] + GiIconBox: typeof import('./../components/GiIconBox/index.vue')['default'] + GiIconSelector: typeof import('./../components/GiIconSelector/index.vue')['default'] + GiIframe: typeof import('./../components/GiIframe/index.vue')['default'] + GiOption: typeof import('./../components/GiOption/index.vue')['default'] + GiOptionItem: typeof import('./../components/GiOptionItem/index.vue')['default'] + GiPageLayout: typeof import('./../components/GiPageLayout/index.vue')['default'] + GiSpace: typeof import('./../components/GiSpace/index.vue')['default'] + GiSplitButton: typeof import('./../components/GiSplitButton/index.vue')['default'] + GiSplitPane: typeof import('./../components/GiSplitPane/index.vue')['default'] + GiSplitPaneFlexibleBox: typeof import('./../components/GiSplitPane/components/GiSplitPaneFlexibleBox.vue')['default'] + GiSvgIcon: typeof import('./../components/GiSvgIcon/index.vue')['default'] + GiTable: typeof import('./../components/GiTable/src/GiTable.vue')['default'] + GiTag: typeof import('./../components/GiTag/index.tsx')['default'] + GiThemeBtn: typeof import('./../components/GiThemeBtn/index.vue')['default'] + HourForm: typeof import('./../components/GenCron/CronForm/component/hour-form.vue')['default'] + Icon403: typeof import('./../components/icons/Icon403.vue')['default'] + Icon404: typeof import('./../components/icons/Icon404.vue')['default'] + Icon500: typeof import('./../components/icons/Icon500.vue')['default'] + IconBorders: typeof import('./../components/icons/IconBorders.vue')['default'] + IconTableSize: typeof import('./../components/icons/IconTableSize.vue')['default'] + IconTreeAdd: typeof import('./../components/icons/IconTreeAdd.vue')['default'] + IconTreeReduce: typeof import('./../components/icons/IconTreeReduce.vue')['default'] + ImageImport: typeof import('./../components/ImageImport/index.vue')['default'] + ImageImportWizard: typeof import('./../components/ImageImportWizard/index.vue')['default'] + IndustrialImageList: typeof import('./../components/IndustrialImageList/index.vue')['default'] + JsonPretty: typeof import('./../components/JsonPretty/index.vue')['default'] + MinuteForm: typeof import('./../components/GenCron/CronForm/component/minute-form.vue')['default'] + MonthForm: typeof import('./../components/GenCron/CronForm/component/month-form.vue')['default'] + NotificationCenter: typeof import('./../components/NotificationCenter/index.vue')['default'] + ParentView: typeof import('./../components/ParentView/index.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] + SecondForm: typeof import('./../components/GenCron/CronForm/component/second-form.vue')['default'] + SplitPanel: typeof import('./../components/SplitPanel/index.vue')['default'] + TextCopy: typeof import('./../components/TextCopy/index.vue')['default'] + TurbineGrid: typeof import('./../components/TurbineGrid/index.vue')['default'] + UserSelect: typeof import('./../components/UserSelect/index.vue')['default'] + Verify: typeof import('./../components/Verify/index.vue')['default'] + VerifyPoints: typeof import('./../components/Verify/Verify/VerifyPoints.vue')['default'] + VerifySlide: typeof import('./../components/Verify/Verify/VerifySlide.vue')['default'] + WeekForm: typeof import('./../components/GenCron/CronForm/component/week-form.vue')['default'] + YearForm: typeof import('./../components/GenCron/CronForm/component/year-form.vue')['default'] } } diff --git a/src/views/task/task-approval/TaskApproval.vue b/src/views/task/task-approval/TaskApproval.vue new file mode 100644 index 0000000..67b89a4 --- /dev/null +++ b/src/views/task/task-approval/TaskApproval.vue @@ -0,0 +1,350 @@ + + + \ No newline at end of file diff --git a/src/views/task/task-progress/TaskProgress.vue b/src/views/task/task-progress/TaskProgress.vue new file mode 100644 index 0000000..0267e80 --- /dev/null +++ b/src/views/task/task-progress/TaskProgress.vue @@ -0,0 +1,38 @@ + + + + + \ No newline at end of file diff --git a/src/views/task/task-publish/TaskPublish.vue b/src/views/task/task-publish/TaskPublish.vue new file mode 100644 index 0000000..caf5def --- /dev/null +++ b/src/views/task/task-publish/TaskPublish.vue @@ -0,0 +1,790 @@ + + + + + \ No newline at end of file diff --git a/src/views/task/task-publish/components/AssigneeSelector.vue b/src/views/task/task-publish/components/AssigneeSelector.vue new file mode 100644 index 0000000..b3dc176 --- /dev/null +++ b/src/views/task/task-publish/components/AssigneeSelector.vue @@ -0,0 +1,134 @@ + + + + + \ No newline at end of file diff --git a/src/views/task/task-publish/components/TaskForm.vue b/src/views/task/task-publish/components/TaskForm.vue new file mode 100644 index 0000000..024277a --- /dev/null +++ b/src/views/task/task-publish/components/TaskForm.vue @@ -0,0 +1,147 @@ + + + + + + \ No newline at end of file