From 3f12fda7f384bd7ad94ae73c89ecacfbd289f44b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E2=80=9CXCYH=E2=80=9D?= <“1561381013@qq.com”>
Date: Mon, 15 Apr 2024 19:27:31 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BE=A7=E8=BE=B9=E6=A0=8F=E4=BF=AE=E6=AD=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
auto-imports.d.ts | 1 +
components.d.ts | 12 +-
src/router/index.ts | 613 +++++++++++----------
src/router/modules/table.ts | 1 +
src/views/personal/project/charge.vue | 3 +
src/views/personal/project/manage.vue | 124 +++++
src/views/personal/project/participate.vue | 3 +
7 files changed, 468 insertions(+), 289 deletions(-)
create mode 100644 src/views/personal/project/charge.vue
create mode 100644 src/views/personal/project/manage.vue
create mode 100644 src/views/personal/project/participate.vue
diff --git a/auto-imports.d.ts b/auto-imports.d.ts
index 24e619c..07b6235 100644
--- a/auto-imports.d.ts
+++ b/auto-imports.d.ts
@@ -3,4 +3,5 @@ export {}
declare global {
const ElMessage: typeof import('element-plus/es')['ElMessage']
const ElMessageBox: typeof import('element-plus/es')['ElMessageBox']
+ const ElNotification: typeof import('element-plus/es')['ElNotification']
}
diff --git a/components.d.ts b/components.d.ts
index d378ba0..99f3489 100644
--- a/components.d.ts
+++ b/components.d.ts
@@ -13,19 +13,17 @@ declare module '@vue/runtime-core' {
DropdownMenu: typeof import('./src/components/Share/DropdownMenu.vue')['default']
Dropzone: typeof import('./src/components/Dropzone/index.vue')['default']
EditorImage: typeof import('./src/components/Tinymce/components/EditorImage.vue')['default']
- ElAutocomplete: typeof import('element-plus/es')['ElAutocomplete']
+ ElAlert: typeof import('element-plus/es')['ElAlert']
ElBadge: typeof import('element-plus/es')['ElBadge']
ElBreadcrumb: typeof import('element-plus/es')['ElBreadcrumb']
ElBreadcrumbItem: typeof import('element-plus/es')['ElBreadcrumbItem']
ElButton: typeof import('element-plus/es')['ElButton']
ElCard: typeof import('element-plus/es')['ElCard']
ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
- ElCheckboxGroup: typeof import('element-plus/es')['ElCheckboxGroup']
ElCol: typeof import('element-plus/es')['ElCol']
ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider']
ElDatePicker: typeof import('element-plus/es')['ElDatePicker']
ElDialog: typeof import('element-plus/es')['ElDialog']
- ElDivider: typeof import('element-plus/es')['ElDivider']
ElDropdown: typeof import('element-plus/es')['ElDropdown']
ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem']
ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu']
@@ -38,16 +36,24 @@ declare module '@vue/runtime-core' {
ElOption: typeof import('element-plus/es')['ElOption']
ElPagination: typeof import('element-plus/es')['ElPagination']
ElProgress: typeof import('element-plus/es')['ElProgress']
+ ElRadio: typeof import('element-plus/es')['ElRadio']
+ ElRadioButton: typeof import('element-plus/es')['ElRadioButton']
+ ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
ElRate: typeof import('element-plus/es')['ElRate']
ElRow: typeof import('element-plus/es')['ElRow']
ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
ElSelect: typeof import('element-plus/es')['ElSelect']
+ ElSlider: typeof import('element-plus/es')['ElSlider']
ElSubMenu: typeof import('element-plus/es')['ElSubMenu']
ElSwitch: typeof import('element-plus/es')['ElSwitch']
ElTable: typeof import('element-plus/es')['ElTable']
ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
+ ElTabPane: typeof import('element-plus/es')['ElTabPane']
+ ElTabs: typeof import('element-plus/es')['ElTabs']
ElTag: typeof import('element-plus/es')['ElTag']
ElTooltip: typeof import('element-plus/es')['ElTooltip']
+ ElTree: typeof import('element-plus/es')['ElTree']
+ ElUpload: typeof import('element-plus/es')['ElUpload']
ErrorLog: typeof import('./src/components/ErrorLog/index.vue')['default']
GithubCorner: typeof import('./src/components/GithubCorner/index.vue')['default']
Hamburger: typeof import('./src/components/Hamburger/index.vue')['default']
diff --git a/src/router/index.ts b/src/router/index.ts
index 334b763..c133cd0 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -1,16 +1,16 @@
-import { markRaw } from 'vue';
+// import { markRaw } from 'vue';
import { createRouter, createWebHistory } from 'vue-router'; // createWebHashHistory, createWebHistory
import type { Router, RouteRecordRaw, RouteComponent } from 'vue-router';
-import { Help as IconHelp } from '@element-plus/icons-vue';
+// import { Help as IconHelp } from '@element-plus/icons-vue';
/* Layout */
const Layout = ():RouteComponent => import('@/layout/index.vue');
/* Router Modules */
-import componentsRouter from './modules/components';
-import chartsRouter from './modules/charts';
-import nestedRouter from './modules/nested';
-import tableRouter from './modules/table';
+// import componentsRouter from './modules/components';
+// import chartsRouter from './modules/charts';
+// import nestedRouter from './modules/nested';
+// import tableRouter from './modules/table';
/**
* constantRoutes
@@ -64,31 +64,31 @@ export const constantRoutes:RouteRecordRaw[] = [
}
]
},
- {
- path: '/documentation',
- component: Layout,
- children: [
- {
- path: 'index',
- component: () => import('@/views/documentation/index.vue'),
- name: 'Documentation',
- meta: { title: 'Documentation', icon: 'documentation', affix: true }
- }
- ]
- },
- {
- path: '/guide',
- component: Layout,
- redirect: '/guide/index',
- children: [
- {
- path: 'index',
- component: () => import('@/views/guide/index.vue'),
- name: 'Guide',
- meta: { title: 'Guide', icon: 'guide', noCache: true }
- }
- ]
- },
+ // {
+ // path: '/documentation',
+ // component: Layout,
+ // children: [
+ // {
+ // path: 'index',
+ // component: () => import('@/views/documentation/index.vue'),
+ // name: 'Documentation',
+ // meta: { title: 'Documentation', icon: 'documentation', affix: true }
+ // }
+ // ]
+ // },
+ // {
+ // path: '/guide',
+ // component: Layout,
+ // redirect: '/guide/index',
+ // children: [
+ // {
+ // path: 'index',
+ // component: () => import('@/views/guide/index.vue'),
+ // name: 'Guide',
+ // meta: { title: 'Guide', icon: 'guide', noCache: true }
+ // }
+ // ]
+ // },
{
path: '/profile',
component: Layout,
@@ -112,288 +112,329 @@ export const constantRoutes:RouteRecordRaw[] = [
* 注意:hidden、alwaysShow 属性配置移动到了meta中!!!
*/
export const asyncRoutes:RouteRecordRaw[] = [
+ // {
+ // path: '/permission',
+ // component: Layout,
+ // redirect: '/permission/page',
+ // name: 'Permission',
+ // meta: {
+ // alwaysShow: true, // will always show the root menu
+ // title: 'Permission',
+ // icon: 'lock',
+ // roles: ['admin', 'editor','teacher_user'] // you can set roles in root nav
+ // },
+ // children: [
+ // {
+ // path: 'page',
+ // component: () => import('@/views/permission/page.vue'),
+ // name: 'PagePermission',
+ // meta: {
+ // title: 'Page Permission',
+ // roles: ['admin','teacher_user'] // or you can only set roles in sub nav
+ // }
+ // },
+ // {
+ // path: 'directive',
+ // component: () => import('@/views/permission/directive.vue'),
+ // name: 'DirectivePermission',
+ // meta: {
+ // title: 'Directive Permission'
+ // // if do not set roles, means: this page does not require permission
+ // }
+ // },
+ // {
+ // path: 'role',
+ // component: () => import('@/views/permission/role.vue'),
+ // name: 'RolePermission',
+ // meta: {
+ // title: 'Role Permission',
+ // roles: ['admin','teacher']
+ // }
+ // }
+ // ]
+ // },
+
+ // 个人项目
{
- path: '/permission',
+ path: '/myself',
component: Layout,
- redirect: '/permission/page',
- name: 'Permission',
+ redirect: '/myself',
meta: {
alwaysShow: true, // will always show the root menu
- title: 'Permission',
- icon: 'lock',
- roles: ['admin', 'editor','teacher_user'] // you can set roles in root nav
+ title: '个人项目',
+ icon: 'nested',
+ roles: ['admin', 'teacher_user']
},
children: [
{
- path: 'page',
- component: () => import('@/views/permission/page.vue'),
- name: 'PagePermission',
- meta: {
- title: 'Page Permission',
- roles: ['admin','teacher_user'] // or you can only set roles in sub nav
- }
+ // 我负责的
+ path: 'charge',
+ component: () => import('@/views/personal/project/charge.vue'),
+ name: 'Charge',
+ meta: { title: '我负责的', icon: 'user', affix: true }
},
{
- path: 'directive',
- component: () => import('@/views/permission/directive.vue'),
- name: 'DirectivePermission',
- meta: {
- title: 'Directive Permission'
- // if do not set roles, means: this page does not require permission
- }
+ // 我管理的
+ path: 'manage',
+ component: () => import('@/views/personal/project/manage.vue'),
+ name: 'Manage',
+ meta: { title: '我管理的', icon: 'user', affix: true }
},
{
- path: 'role',
- component: () => import('@/views/permission/role.vue'),
- name: 'RolePermission',
- meta: {
- title: 'Role Permission',
- roles: ['admin','teacher']
- }
- }
- ]
- },
+ // 我参与的
+ path: 'participate',
+ component: () => import('@/views/personal/project/participate.vue'),
+ name: 'Participate',
+ meta: { title: '我参与的', icon: 'user', affix: true }
+ },
+
+
+
- {
- path: '/icon',
- component: Layout,
- children: [
- {
- path: 'index',
- component: () => import('@/views/icons/index.vue'),
- name: 'Icons',
- meta: { title: 'Icons', icon: 'icon', noCache: true }
- }
]
},
+
+
+ // {
+ // path: '/icon',
+ // component: Layout,
+ // children: [
+ // {
+ // path: 'index',
+ // component: () => import('@/views/icons/index.vue'),
+ // name: 'Icons',
+ // meta: { title: 'Icons', icon: 'icon', noCache: true }
+ // }
+ // ]
+ // },
// /** when your routing map is too long, you can split it into small modules **/
- componentsRouter,
- chartsRouter,
- nestedRouter,
- tableRouter,
+ // componentsRouter,
+ // chartsRouter,
+ // nestedRouter,
+ // tableRouter,
- {
- path: '/example',
- component: Layout,
- redirect: '/example/list',
- name: 'Example',
- meta: {
- title: 'Example',
- icon: markRaw(IconHelp)
- },
- children: [
- {
- path: 'create',
- component: () => import('@/views/example/create.vue'),
- name: 'CreateArticle',
- meta: { title: 'Create Article', icon: 'edit' }
- },
- {
- path: 'edit/:id(\\d+)',
- component: () => import('@/views/example/edit.vue'),
- name: 'EditArticle',
- meta: { hidden: true, title: 'Edit Article', noCache: true, activeMenu: '/example/list' }
- },
- {
- path: 'list',
- component: () => import('@/views/example/list.vue'),
- name: 'ArticleList',
- meta: { title: 'Article List', icon: 'list' }
- }
- ]
- },
+ // {
+ // path: '/example',
+ // component: Layout,
+ // redirect: '/example/list',
+ // name: 'Example',
+ // meta: {
+ // title: 'Example',
+ // icon: markRaw(IconHelp)
+ // },
+ // children: [
+ // {
+ // path: 'create',
+ // component: () => import('@/views/example/create.vue'),
+ // name: 'CreateArticle',
+ // meta: { title: 'Create Article', icon: 'edit' }
+ // },
+ // {
+ // path: 'edit/:id(\\d+)',
+ // component: () => import('@/views/example/edit.vue'),
+ // name: 'EditArticle',
+ // meta: { hidden: true, title: 'Edit Article', noCache: true, activeMenu: '/example/list' }
+ // },
+ // {
+ // path: 'list',
+ // component: () => import('@/views/example/list.vue'),
+ // name: 'ArticleList',
+ // meta: { title: 'Article List', icon: 'list' }
+ // }
+ // ]
+ // },
- {
- path: '/tab',
- component: Layout,
- children: [
- {
- path: 'index',
- component: () => import('@/views/tab/index.vue'),
- name: 'Tab',
- meta: { title: 'Tab', icon: 'tab' }
- }
- ]
- },
+ // {
+ // path: '/tab',
+ // component: Layout,
+ // children: [
+ // {
+ // path: 'index',
+ // component: () => import('@/views/tab/index.vue'),
+ // name: 'Tab',
+ // meta: { title: 'Tab', icon: 'tab' }
+ // }
+ // ]
+ // },
- {
- path: '/error',
- component: Layout,
- redirect: 'noRedirect',
- name: 'ErrorPages',
- meta: {
- title: 'Error Pages',
- icon: '404'
- },
- children: [
- {
- path: '401',
- component: () => import('@/views/error-page/401.vue'),
- name: 'Page401',
- meta: { title: '401', noCache: true }
- },
- {
- path: '404',
- component: () => import('@/views/error-page/404.vue'),
- name: 'Page404',
- meta: { title: '404', noCache: true }
- }
- ]
- },
+ // {
+ // path: '/error',
+ // component: Layout,
+ // redirect: 'noRedirect',
+ // name: 'ErrorPages',
+ // meta: {
+ // title: 'Error Pages',
+ // icon: '404'
+ // },
+ // children: [
+ // {
+ // path: '401',
+ // component: () => import('@/views/error-page/401.vue'),
+ // name: 'Page401',
+ // meta: { title: '401', noCache: true }
+ // },
+ // {
+ // path: '404',
+ // component: () => import('@/views/error-page/404.vue'),
+ // name: 'Page404',
+ // meta: { title: '404', noCache: true }
+ // }
+ // ]
+ // },
- {
- path: '/error-log',
- component: Layout,
- children: [
- {
- path: 'log',
- component: () => import('@/views/error-log/index.vue'),
- name: 'ErrorLog',
- meta: { title: 'Error Log', icon: 'bug' }
- }
- ]
- },
+ // {
+ // path: '/error-log',
+ // component: Layout,
+ // children: [
+ // {
+ // path: 'log',
+ // component: () => import('@/views/error-log/index.vue'),
+ // name: 'ErrorLog',
+ // meta: { title: 'Error Log', icon: 'bug' }
+ // }
+ // ]
+ // },
- {
- path: '/excel',
- component: Layout,
- redirect: '/excel/export-excel',
- name: 'Excel',
- meta: {
- title: 'Excel',
- icon: 'excel'
- },
- children: [
- {
- path: 'export-excel',
- component: () => import('@/views/excel/export-excel.vue'),
- name: 'ExportExcel',
- meta: { title: 'Export Excel' }
- },
- {
- path: 'export-selected-excel',
- component: () => import('@/views/excel/select-excel.vue'),
- name: 'SelectExcel',
- meta: { title: 'Export Selected' }
- },
- {
- path: 'export-merge-header',
- component: () => import('@/views/excel/merge-header.vue'),
- name: 'MergeHeader',
- meta: { title: 'Merge Header' }
- },
- {
- path: 'upload-excel',
- component: () => import('@/views/excel/upload-excel.vue'),
- name: 'UploadExcel',
- meta: { title: 'Upload Excel' }
- }
- ]
- },
+ // {
+ // path: '/excel',
+ // component: Layout,
+ // redirect: '/excel/export-excel',
+ // name: 'Excel',
+ // meta: {
+ // title: 'Excel',
+ // icon: 'excel'
+ // },
+ // children: [
+ // {
+ // path: 'export-excel',
+ // component: () => import('@/views/excel/export-excel.vue'),
+ // name: 'ExportExcel',
+ // meta: { title: 'Export Excel' }
+ // },
+ // {
+ // path: 'export-selected-excel',
+ // component: () => import('@/views/excel/select-excel.vue'),
+ // name: 'SelectExcel',
+ // meta: { title: 'Export Selected' }
+ // },
+ // {
+ // path: 'export-merge-header',
+ // component: () => import('@/views/excel/merge-header.vue'),
+ // name: 'MergeHeader',
+ // meta: { title: 'Merge Header' }
+ // },
+ // {
+ // path: 'upload-excel',
+ // component: () => import('@/views/excel/upload-excel.vue'),
+ // name: 'UploadExcel',
+ // meta: { title: 'Upload Excel' }
+ // }
+ // ]
+ // },
- {
- path: '/zip',
- component: Layout,
- redirect: '/zip/download',
- name: 'Zip',
- meta: { alwaysShow: true, title: 'Zip', icon: 'zip' },
- children: [
- {
- path: 'download',
- component: () => import('@/views/zip/index.vue'),
- name: 'ExportZip',
- meta: { title: 'Export Zip' }
- }
- ]
- },
+ // {
+ // path: '/zip',
+ // component: Layout,
+ // redirect: '/zip/download',
+ // name: 'Zip',
+ // meta: { alwaysShow: true, title: 'Zip', icon: 'zip' },
+ // children: [
+ // {
+ // path: 'download',
+ // component: () => import('@/views/zip/index.vue'),
+ // name: 'ExportZip',
+ // meta: { title: 'Export Zip' }
+ // }
+ // ]
+ // },
- {
- path: '/pdf',
- component: Layout,
- redirect: '/pdf/index',
- children: [
- {
- path: 'index',
- component: () => import('@/views/pdf/index.vue'),
- name: 'PDF',
- meta: { title: 'PDF', icon: 'pdf' }
- }
- ]
- },
- {
- path: '/pdf/download',
- component: () => import('@/views/pdf/download.vue'),
- meta: { hidden: true }
- },
+ // {
+ // path: '/pdf',
+ // component: Layout,
+ // redirect: '/pdf/index',
+ // children: [
+ // {
+ // path: 'index',
+ // component: () => import('@/views/pdf/index.vue'),
+ // name: 'PDF',
+ // meta: { title: 'PDF', icon: 'pdf' }
+ // }
+ // ]
+ // },
+ // {
+ // path: '/pdf/download',
+ // component: () => import('@/views/pdf/download.vue'),
+ // meta: { hidden: true }
+ // },
- {
- path: '/theme',
- component: Layout,
- children: [
- {
- path: 'index',
- component: () => import('@/views/theme/index.vue'),
- name: 'Theme',
- meta: { title: 'Theme', icon: 'theme' }
- }
- ]
- },
+ // {
+ // path: '/theme',
+ // component: Layout,
+ // children: [
+ // {
+ // path: 'index',
+ // component: () => import('@/views/theme/index.vue'),
+ // name: 'Theme',
+ // meta: { title: 'Theme', icon: 'theme' }
+ // }
+ // ]
+ // },
- {
- path: '/clipboard',
- component: Layout,
- children: [
- {
- path: 'index',
- component: () => import('@/views/clipboard/index.vue'),
- name: 'ClipboardDemo',
- meta: { title: 'Clipboard', icon: 'clipboard' }
- }
- ]
- },
+ // {
+ // path: '/clipboard',
+ // component: Layout,
+ // children: [
+ // {
+ // path: 'index',
+ // component: () => import('@/views/clipboard/index.vue'),
+ // name: 'ClipboardDemo',
+ // meta: { title: 'Clipboard', icon: 'clipboard' }
+ // }
+ // ]
+ // },
- {
- path: '/external-link',
- component: Layout,
- children: [
- {
- path: 'https://element-plus.midfar.com',
- meta: { title: 'External Link', icon: 'link' },
- redirect: ''
- }
- ]
- },
+ // {
+ // path: '/external-link',
+ // component: Layout,
+ // children: [
+ // {
+ // path: 'https://element-plus.midfar.com',
+ // meta: { title: 'External Link', icon: 'link' },
+ // redirect: ''
+ // }
+ // ]
+ // },
- {
- path: '/my-demo',
- component: Layout,
- name: 'MyDemo',
- meta: {
- title: 'MyDemo',
- icon: 'component'
- },
- children: [
- {
- path: 'element-demo',
- component: () => import('@/views/mydemo/ElementDemo.vue'),
- name: 'ElementDemo',
- meta: { title: 'ElementDemo', icon: 'skill' }
- },
- {
- path: 'store-demo',
- component: () => import('@/views/mydemo/StoreDemo.vue'),
- name: 'StoreDemo',
- meta: { title: 'StoreDemo', icon: 'lock' }
- },
- {
- path: 'webSocket-demo',
- component: () => import('@/views/mydemo/WebSocketDemo.vue'),
- name: 'WebSocketDemo',
- meta: { title: 'WebSocketDemo', icon: 'lock' }
- }
- ]
- },
+ // {
+ // path: '/my-demo',
+ // component: Layout,
+ // name: 'MyDemo',
+ // meta: {
+ // title: 'MyDemo',
+ // icon: 'component'
+ // },
+ // children: [
+ // {
+ // path: 'element-demo',
+ // component: () => import('@/views/mydemo/ElementDemo.vue'),
+ // name: 'ElementDemo',
+ // meta: { title: 'ElementDemo', icon: 'skill' }
+ // },
+ // {
+ // path: 'store-demo',
+ // component: () => import('@/views/mydemo/StoreDemo.vue'),
+ // name: 'StoreDemo',
+ // meta: { title: 'StoreDemo', icon: 'lock' }
+ // },
+ // {
+ // path: 'webSocket-demo',
+ // component: () => import('@/views/mydemo/WebSocketDemo.vue'),
+ // name: 'WebSocketDemo',
+ // meta: { title: 'WebSocketDemo', icon: 'lock' }
+ // }
+ // ]
+ // },
// 404 page must be placed at the end !!!
{ path: '/:pathMatch(.*)*', redirect: '/404', meta: { hidden: true }}
diff --git a/src/router/modules/table.ts b/src/router/modules/table.ts
index 63869e6..eb67326 100644
--- a/src/router/modules/table.ts
+++ b/src/router/modules/table.ts
@@ -2,6 +2,7 @@
const Layout = () => import('@/layout/index.vue');
+//侧边栏
const tableRouter = {
path: '/table',
component: Layout,
diff --git a/src/views/personal/project/charge.vue b/src/views/personal/project/charge.vue
new file mode 100644
index 0000000..b8461c3
--- /dev/null
+++ b/src/views/personal/project/charge.vue
@@ -0,0 +1,3 @@
+
+ hello
+
\ No newline at end of file
diff --git a/src/views/personal/project/manage.vue b/src/views/personal/project/manage.vue
new file mode 100644
index 0000000..a704adf
--- /dev/null
+++ b/src/views/personal/project/manage.vue
@@ -0,0 +1,124 @@
+
+
+
+ 项目1
+
+
+ 名称
+
+
+
+ 状态
+
+
+
+ 查询
+ 重置
+
+
+
+
+
+ 子系统列表
+
+
+
+
+ {{ scope.row.date }}
+
+
+
+
+
+
+
+
+
+ 查看详情
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/personal/project/participate.vue b/src/views/personal/project/participate.vue
new file mode 100644
index 0000000..5cd477b
--- /dev/null
+++ b/src/views/personal/project/participate.vue
@@ -0,0 +1,3 @@
+
+ hi
+
\ No newline at end of file