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 @@ + \ 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 @@ + + + + \ 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 @@ + \ No newline at end of file