Browse Source

增加欢迎页,删除多余路由

zhy 4 months ago
parent
commit
ce7a46ba3a

File diff suppressed because it is too large
+ 1 - 0
jeecgboot-vue3/src/assets/svg/login-box-bg copy.svg


+ 1 - 1
jeecgboot-vue3/src/enums/pageEnum.ts

@@ -2,7 +2,7 @@ export enum PageEnum {
   // basic login path
   BASE_LOGIN = '/login',
   // basic home path
-  BASE_HOME = '/dashboard/analysis',
+  BASE_HOME = '/dashboard/home',
   // error page path
   ERROR_PAGE = '/exception',
   // error log page path

+ 1 - 1
jeecgboot-vue3/src/layouts/default/tabs/components/TabContent.vue

@@ -61,7 +61,7 @@
       const prefixIconType = computed(() => {
         if (props.tabItem.meta.icon) {
           return props.tabItem.meta.icon;
-        } else if (props.tabItem.path === '/dashboard/analysis') {
+        } else if (props.tabItem.path === '/dashboard/home') {
           // 当是首页时返回 home 图标 TODO 此处可能需要动态判断首页路径
           return 'ant-design:home-outlined';
         } else {

+ 1 - 11
jeecgboot-vue3/src/router/routes/mainOut.ts

@@ -7,16 +7,6 @@ import type { AppRouteModule } from '/@/router/types';
 
 // test
 // http:ip:port/main-out
-export const mainOutRoutes: AppRouteModule[] = [
-  {
-    path: '/main-out',
-    name: 'MainOut',
-    component: () => import('/@/views/demo/main-out/index.vue'),
-    meta: {
-      title: 'MainOut',
-      ignoreAuth: true,
-    },
-  },
-];
+export const mainOutRoutes: AppRouteModule[] = [];
 
 export const mainOutRouteNames = mainOutRoutes.map((item) => item.name);

+ 10 - 1
jeecgboot-vue3/src/router/routes/modules/dashboard.ts

@@ -7,13 +7,22 @@ const dashboard: AppRouteModule = {
   path: '/dashboard',
   name: 'Dashboard',
   component: LAYOUT,
-  redirect: '/dashboard/analysis',
+  redirect: '/dashboard/home',
   meta: {
     orderNo: 10,
     icon: 'ion:grid-outline',
     title: t('routes.dashboard.dashboard'),
   },
   children: [
+    {
+      path: 'home',
+      name: 'home',
+      component: () => import('/@/views/dashboard/Home/index.vue'),
+      meta: {
+        // affix: true,
+        title: '欢迎页',
+      },
+    },
     {
       path: 'analysis',
       name: 'Analysis',

+ 0 - 79
jeecgboot-vue3/src/router/routes/modules/demo/charts.ts

@@ -1,79 +0,0 @@
-import type { AppRouteModule } from '/@/router/types';
-
-import { getParentLayout, LAYOUT } from '/@/router/constant';
-import { t } from '/@/hooks/web/useI18n';
-
-const charts: AppRouteModule = {
-  path: '/charts',
-  name: 'Charts',
-  component: LAYOUT,
-  redirect: '/charts/echarts/map',
-  meta: {
-    orderNo: 500,
-    icon: 'ion:bar-chart-outline',
-    title: t('routes.demo.charts.charts'),
-  },
-  children: [
-    {
-      path: 'baiduMap',
-      name: 'BaiduMap',
-      meta: {
-        title: t('routes.demo.charts.baiduMap'),
-      },
-      component: () => import('/@/views/demo/charts/map/Baidu.vue'),
-    },
-    {
-      path: 'aMap',
-      name: 'AMap',
-      meta: {
-        title: t('routes.demo.charts.aMap'),
-      },
-      component: () => import('/@/views/demo/charts/map/Gaode.vue'),
-    },
-    {
-      path: 'googleMap',
-      name: 'GoogleMap',
-      meta: {
-        title: t('routes.demo.charts.googleMap'),
-      },
-      component: () => import('/@/views/demo/charts/map/Google.vue'),
-    },
-    {
-      path: 'echarts',
-      name: 'Echarts',
-      component: getParentLayout('Echarts'),
-      meta: {
-        title: 'Echarts',
-      },
-      redirect: '/charts/echarts/map',
-      children: [
-        {
-          path: 'map',
-          name: 'Map',
-          component: () => import('/@/views/demo/charts/Map.vue'),
-          meta: {
-            title: t('routes.demo.charts.map'),
-          },
-        },
-        {
-          path: 'line',
-          name: 'Line',
-          component: () => import('/@/views/demo/charts/Line.vue'),
-          meta: {
-            title: t('routes.demo.charts.line'),
-          },
-        },
-        {
-          path: 'pie',
-          name: 'Pie',
-          component: () => import('/@/views/demo/charts/Pie.vue'),
-          meta: {
-            title: t('routes.demo.charts.pie'),
-          },
-        },
-      ],
-    },
-  ],
-};
-
-export default charts;

+ 0 - 692
jeecgboot-vue3/src/router/routes/modules/demo/comp.ts

@@ -1,692 +0,0 @@
-import type { AppRouteModule } from '/@/router/types';
-
-import { getParentLayout, LAYOUT } from '/@/router/constant';
-import { t } from '/@/hooks/web/useI18n';
-
-const comp: AppRouteModule = {
-  path: '/comp',
-  name: 'Comp',
-  component: LAYOUT,
-  redirect: '/comp/basic',
-  meta: {
-    orderNo: 30,
-    icon: 'ion:layers-outline',
-    title: t('routes.demo.comp.comp'),
-  },
-
-  children: [
-    {
-      path: 'jeecg',
-      name: 'JeecgDemo',
-      redirect: '/comp/jeecg/basic',
-      component: getParentLayout('JeecgDemo'),
-      meta: {
-        title: t('routes.demo.comp.jeecg'),
-      },
-      children: [
-        {
-          path: 'basic',
-          name: 'JAreaLinkage',
-          component: () => import('/@/views/demo/jeecg/JeecgComponents.vue'),
-          meta: {
-            title: t('routes.demo.jeecg.JAreaLinkage'),
-          },
-        },
-        {
-          path: 'oneToMore',
-          name: 'oneToMoreDemo',
-          component: () => import('/@/views/demo/vextable/index.vue'),
-          meta: {
-            title: t('routes.demo.comp.oneToMore'),
-          },
-        },
-      ],
-    },
-    {
-      path: 'basic',
-      name: 'BasicDemo',
-      component: getParentLayout('BasicDemo'),
-      meta: {
-        title: t('routes.demo.comp.basic'),
-      },
-      children: [
-        {
-          path: 'button',
-          name: 'ButtonDemo',
-          component: () => import('/@/views/demo/comp/button/index.vue'),
-          meta: {
-            title: t('routes.demo.basic.button'),
-          },
-        },
-        {
-          path: 'icon',
-          name: 'IconDemo',
-          component: () => import('/@/views/demo/feat/icon/index.vue'),
-          meta: {
-            title: t('routes.demo.feat.icon'),
-          },
-        },
-        {
-          path: 'msg',
-          name: 'MsgDemo',
-          component: () => import('/@/views/demo/feat/msg/index.vue'),
-          meta: {
-            title: t('routes.demo.feat.msg'),
-          },
-        },
-        {
-          path: 'tabs',
-          name: 'TabsDemo',
-          component: () => import('/@/views/demo/feat/tabs/index.vue'),
-          meta: {
-            title: t('routes.demo.feat.tabs'),
-            hideChildrenInMenu: true,
-          },
-          children: [
-            {
-              path: 'detail/:id',
-              name: 'TabDetail',
-              component: () => import('/@/views/demo/feat/tabs/TabDetail.vue'),
-              meta: {
-                currentActiveMenu: '/comp/basic/tabs',
-                title: t('routes.demo.feat.tabDetail'),
-                hideMenu: true,
-                dynamicLevel: 3,
-                realPath: '/comp/basic/tabs/detail',
-              },
-            },
-          ],
-        },
-      ],
-    },
-
-    {
-      path: 'form',
-      name: 'FormDemo',
-      redirect: '/comp/form/basic',
-      component: getParentLayout('FormDemo'),
-      meta: {
-        // icon: 'mdi:form-select',
-        title: t('routes.demo.form.form'),
-      },
-      children: [
-        {
-          path: 'basic',
-          name: 'FormBasicDemo',
-          component: () => import('/@/views/demo/form/index.vue'),
-          meta: {
-            title: t('routes.demo.form.basic'),
-          },
-        },
-        {
-          path: 'useForm',
-          name: 'UseFormDemo',
-          component: () => import('/@/views/demo/form/UseForm.vue'),
-          meta: {
-            title: t('routes.demo.form.useForm'),
-          },
-        },
-        {
-          path: 'refForm',
-          name: 'RefFormDemo',
-          component: () => import('/@/views/demo/form/RefForm.vue'),
-          meta: {
-            title: t('routes.demo.form.refForm'),
-          },
-        },
-        {
-          path: 'advancedForm',
-          name: 'AdvancedFormDemo',
-          component: () => import('/@/views/demo/form/AdvancedForm.vue'),
-          meta: {
-            title: t('routes.demo.form.advancedForm'),
-          },
-        },
-        {
-          path: 'ruleForm',
-          name: 'RuleFormDemo',
-          component: () => import('/@/views/demo/form/RuleForm.vue'),
-          meta: {
-            title: t('routes.demo.form.ruleForm'),
-          },
-        },
-        {
-          path: 'dynamicForm',
-          name: 'DynamicFormDemo',
-          component: () => import('/@/views/demo/form/DynamicForm.vue'),
-          meta: {
-            title: t('routes.demo.form.dynamicForm'),
-          },
-        },
-        {
-          path: 'customerForm',
-          name: 'CustomerFormDemo',
-          component: () => import('/@/views/demo/form/CustomerForm.vue'),
-          meta: {
-            title: t('routes.demo.form.customerForm'),
-          },
-        },
-        {
-          path: 'appendForm',
-          name: 'appendFormDemo',
-          component: () => import('/@/views/demo/form/AppendForm.vue'),
-          meta: {
-            title: t('routes.demo.form.appendForm'),
-          },
-        },
-      ],
-    },
-    {
-      path: 'table',
-      name: 'TableDemo',
-      redirect: '/comp/table/basic',
-      component: getParentLayout('TableDemo'),
-      meta: {
-        // icon: 'carbon:table-split',
-        title: t('routes.demo.table.table'),
-      },
-
-      children: [
-        {
-          path: 'basic',
-          name: 'TableBasicDemo',
-          component: () => import('/@/views/demo/table/Basic.vue'),
-          meta: {
-            title: t('routes.demo.table.basic'),
-          },
-        },
-        {
-          path: 'treeTable',
-          name: 'TreeTableDemo',
-          component: () => import('/@/views/demo/table/TreeTable.vue'),
-          meta: {
-            title: t('routes.demo.table.treeTable'),
-          },
-        },
-        {
-          path: 'fetchTable',
-          name: 'FetchTableDemo',
-          component: () => import('/@/views/demo/table/FetchTable.vue'),
-          meta: {
-            title: t('routes.demo.table.fetchTable'),
-          },
-        },
-        {
-          path: 'fixedColumn',
-          name: 'FixedColumnDemo',
-          component: () => import('/@/views/demo/table/FixedColumn.vue'),
-          meta: {
-            title: t('routes.demo.table.fixedColumn'),
-          },
-        },
-        {
-          path: 'customerCell',
-          name: 'CustomerCellDemo',
-          component: () => import('/@/views/demo/table/CustomerCell.vue'),
-          meta: {
-            title: t('routes.demo.table.customerCell'),
-          },
-        },
-        {
-          path: 'formTable',
-          name: 'FormTableDemo',
-          component: () => import('/@/views/demo/table/FormTable.vue'),
-          meta: {
-            title: t('routes.demo.table.formTable'),
-          },
-        },
-        {
-          path: 'useTable',
-          name: 'UseTableDemo',
-          component: () => import('/@/views/demo/table/UseTable.vue'),
-          meta: {
-            title: t('routes.demo.table.useTable'),
-          },
-        },
-        {
-          path: 'refTable',
-          name: 'RefTableDemo',
-          component: () => import('/@/views/demo/table/RefTable.vue'),
-          meta: {
-            title: t('routes.demo.table.refTable'),
-          },
-        },
-        {
-          path: 'multipleHeader',
-          name: 'MultipleHeaderDemo',
-          component: () => import('/@/views/demo/table/MultipleHeader.vue'),
-          meta: {
-            title: t('routes.demo.table.multipleHeader'),
-          },
-        },
-        {
-          path: 'mergeHeader',
-          name: 'MergeHeaderDemo',
-          component: () => import('/@/views/demo/table/MergeHeader.vue'),
-          meta: {
-            title: t('routes.demo.table.mergeHeader'),
-          },
-        },
-        {
-          path: 'nestedTable',
-          name: 'nestedTableDemo',
-          component: () => import('/@/views/demo/table/NestedTable.vue'),
-          meta: {
-            title: t('routes.demo.table.nestedTable'),
-          },
-        },
-        {
-          path: 'expandTable',
-          name: 'ExpandTableDemo',
-          component: () => import('/@/views/demo/table/ExpandTable.vue'),
-          meta: {
-            title: t('routes.demo.table.expandTable'),
-          },
-        },
-        {
-          path: 'fixedHeight',
-          name: 'FixedHeightDemo',
-          component: () => import('/@/views/demo/table/FixedHeight.vue'),
-          meta: {
-            title: t('routes.demo.table.fixedHeight'),
-          },
-        },
-        {
-          path: 'footerTable',
-          name: 'FooterTableDemo',
-          component: () => import('/@/views/demo/table/FooterTable.vue'),
-          meta: {
-            title: t('routes.demo.table.footerTable'),
-          },
-        },
-        {
-          path: 'editCellTable',
-          name: 'EditCellTableDemo',
-          component: () => import('/@/views/demo/table/EditCellTable.vue'),
-          meta: {
-            title: t('routes.demo.table.editCellTable'),
-          },
-        },
-        {
-          path: 'editRowTable',
-          name: 'EditRowTableDemo',
-          component: () => import('/@/views/demo/table/EditRowTable.vue'),
-          meta: {
-            title: t('routes.demo.table.editRowTable'),
-          },
-        },
-        {
-          path: 'authColumn',
-          name: 'AuthColumnDemo',
-          component: () => import('/@/views/demo/table/AuthColumn.vue'),
-          meta: {
-            title: t('routes.demo.table.authColumn'),
-          },
-        },
-      ],
-    },
-    {
-      path: 'modal',
-      name: 'ModalDemo',
-      redirect: '/comp/modal/basic',
-      component: getParentLayout('ModalDemo'),
-      meta: {
-        title: t('routes.demo.comp.modal'),
-      },
-      children: [
-        {
-          path: 'basic',
-          name: 'ModalBasicDemo',
-          component: () => import('/@/views/demo/comp/modal/index.vue'),
-          meta: {
-            title: t('routes.demo.comp.modal.basic'),
-          },
-        },
-        {
-          path: 'drawer',
-          name: 'DrawerDemo',
-          component: () => import('/@/views/demo/comp/drawer/index.vue'),
-          meta: {
-            title: t('routes.demo.comp.modal.drawer'),
-          },
-        },
-      ],
-    },
-
-    {
-      path: 'third',
-      name: 'ThirdDemo',
-      redirect: '/comp/third/basic',
-      component: getParentLayout('ModalDemo'),
-      meta: {
-        title: t('routes.demo.comp.third'),
-      },
-      children: [
-        {
-          path: 'basic',
-          name: 'CropperDemo',
-          component: () => import('/@/views/demo/comp/cropper/index.vue'),
-          meta: {
-            title: t('routes.demo.comp.cropperImage'),
-          },
-        },
-        {
-          path: 'qrcode',
-          name: 'QrCodeDemo',
-          component: () => import('/@/views/demo/comp/qrcode/index.vue'),
-          meta: {
-            title: t('routes.demo.comp.qrcode'),
-          },
-        },
-        {
-          path: 'strength-meter',
-          name: 'StrengthMeterDemo',
-          component: () => import('/@/views/demo/comp/strength-meter/index.vue'),
-          meta: {
-            title: t('routes.demo.comp.strength'),
-          },
-        },
-        {
-          path: 'upload',
-          name: 'UploadDemo',
-          component: () => import('/@/views/demo/comp/upload/index.vue'),
-          meta: {
-            title: t('routes.demo.comp.upload'),
-          },
-        },
-        {
-          path: 'loading',
-          name: 'LoadingDemo',
-          component: () => import('/@/views/demo/comp/loading/index.vue'),
-          meta: {
-            title: t('routes.demo.comp.loading'),
-          },
-        },
-        {
-          path: 'timestamp',
-          name: 'TimeDemo',
-          component: () => import('/@/views/demo/comp/time/index.vue'),
-          meta: {
-            title: t('routes.demo.comp.time'),
-          },
-        },
-        {
-          path: 'countTo',
-          name: 'CountTo',
-          component: () => import('/@/views/demo/comp/count-to/index.vue'),
-          meta: {
-            title: t('routes.demo.comp.countTo'),
-          },
-        },
-        {
-          path: 'transition',
-          name: 'transitionDemo',
-          component: () => import('/@/views/demo/comp/transition/index.vue'),
-          meta: {
-            title: t('routes.demo.comp.transition'),
-          },
-        },
-        {
-          path: 'print',
-          name: 'Print',
-          component: () => import('/@/views/demo/feat/print/index.vue'),
-          meta: {
-            title: t('routes.demo.feat.print'),
-          },
-        },
-        {
-          path: 'img-preview',
-          name: 'ImgPreview',
-          component: () => import('/@/views/demo/feat/img-preview/index.vue'),
-          meta: {
-            title: t('routes.demo.feat.imgPreview'),
-          },
-        },
-        {
-          path: 'download',
-          name: 'DownLoadDemo',
-          component: () => import('/@/views/demo/feat/download/index.vue'),
-          meta: {
-            title: t('routes.demo.feat.download'),
-          },
-        },
-        {
-          path: 'click-out-side',
-          name: 'ClickOutSideDemo',
-          component: () => import('/@/views/demo/feat/click-out-side/index.vue'),
-          meta: {
-            title: t('routes.demo.feat.clickOutSide'),
-          },
-        },
-        {
-          path: 'copy',
-          name: 'CopyDemo',
-          component: () => import('/@/views/demo/feat/copy/index.vue'),
-          meta: {
-            title: t('routes.demo.feat.copy'),
-          },
-        },
-        {
-          path: 'ripple',
-          name: 'RippleDemo',
-          component: () => import('/@/views/demo/feat/ripple/index.vue'),
-          meta: {
-            title: t('routes.demo.feat.ripple'),
-          },
-        },
-      ],
-    },
-    {
-      path: 'tree',
-      name: 'TreeDemo',
-      redirect: '/comp/tree/basic',
-      component: getParentLayout('TreeDemo'),
-      meta: {
-        // icon: 'clarity:tree-view-line',
-        title: t('routes.demo.comp.tree'),
-      },
-      children: [
-        {
-          path: 'basic',
-          name: 'BasicTreeDemo',
-          component: () => import('/@/views/demo/tree/index.vue'),
-          meta: {
-            title: t('routes.demo.comp.treeBasic'),
-          },
-        },
-        {
-          path: 'editTree',
-          name: 'EditTreeDemo',
-          component: () => import('/@/views/demo/tree/EditTree.vue'),
-          meta: {
-            title: t('routes.demo.comp.editTree'),
-          },
-        },
-        {
-          path: 'actionTree',
-          name: 'ActionTreeDemo',
-          component: () => import('/@/views/demo/tree/ActionTree.vue'),
-          meta: {
-            title: t('routes.demo.comp.actionTree'),
-          },
-        },
-      ],
-    },
-    {
-      path: 'editor',
-      name: 'EditorDemo',
-      redirect: '/comp/editor/markdown',
-      component: getParentLayout('EditorDemo'),
-      meta: {
-        // icon: 'carbon:table-split',
-        title: t('routes.demo.editor.editor'),
-      },
-      children: [
-        {
-          path: 'json',
-          component: () => import('/@/views/demo/editor/json/index.vue'),
-          name: 'JsonEditorDemo',
-          meta: {
-            title: t('routes.demo.editor.jsonEditor'),
-          },
-        },
-        {
-          path: 'markdown',
-          component: getParentLayout('MarkdownDemo'),
-          name: 'MarkdownDemo',
-          meta: {
-            title: t('routes.demo.editor.markdown'),
-          },
-          redirect: '/comp/editor/markdown/index',
-          children: [
-            {
-              path: 'index',
-              name: 'MarkDownBasicDemo',
-              component: () => import('/@/views/demo/editor/markdown/index.vue'),
-              meta: {
-                title: t('routes.demo.editor.tinymceBasic'),
-              },
-            },
-            {
-              path: 'editor',
-              name: 'MarkDownFormDemo',
-              component: () => import('/@/views/demo/editor/markdown/Editor.vue'),
-              meta: {
-                title: t('routes.demo.editor.tinymceForm'),
-              },
-            },
-          ],
-        },
-
-        {
-          path: 'tinymce',
-          component: getParentLayout('TinymceDemo'),
-          name: 'TinymceDemo',
-          meta: {
-            title: t('routes.demo.editor.tinymce'),
-          },
-          redirect: '/comp/editor/tinymce/index',
-          children: [
-            {
-              path: 'index',
-              name: 'TinymceBasicDemo',
-              component: () => import('/@/views/demo/editor/tinymce/index.vue'),
-              meta: {
-                title: t('routes.demo.editor.tinymceBasic'),
-              },
-            },
-            {
-              path: 'editor',
-              name: 'TinymceFormDemo',
-              component: () => import('/@/views/demo/editor/tinymce/Editor.vue'),
-              meta: {
-                title: t('routes.demo.editor.tinymceForm'),
-              },
-            },
-          ],
-        },
-      ],
-    },
-    {
-      path: 'scroll',
-      name: 'ScrollDemo',
-      redirect: '/comp/scroll/basic',
-      component: getParentLayout('ScrollDemo'),
-      meta: {
-        title: t('routes.demo.comp.scroll'),
-      },
-      children: [
-        {
-          path: 'basic',
-          name: 'BasicScrollDemo',
-          component: () => import('/@/views/demo/comp/scroll/index.vue'),
-          meta: {
-            title: t('routes.demo.comp.scrollBasic'),
-          },
-        },
-        {
-          path: 'action',
-          name: 'ActionScrollDemo',
-          component: () => import('/@/views/demo/comp/scroll/Action.vue'),
-          meta: {
-            title: t('routes.demo.comp.scrollAction'),
-          },
-        },
-        {
-          path: 'virtualScroll',
-          name: 'VirtualScrollDemo',
-          component: () => import('/@/views/demo/comp/scroll/VirtualScroll.vue'),
-          meta: {
-            title: t('routes.demo.comp.virtualScroll'),
-          },
-        },
-      ],
-    },
-
-    {
-      path: 'desc',
-      name: 'DescDemo',
-      component: () => import('/@/views/demo/comp/desc/index.vue'),
-      meta: {
-        title: t('routes.demo.comp.desc'),
-      },
-    },
-
-    {
-      path: 'lazy',
-      name: 'LazyDemo',
-      component: getParentLayout('LazyDemo'),
-      redirect: '/comp/lazy/basic',
-      meta: {
-        title: t('routes.demo.comp.lazy'),
-      },
-      children: [
-        {
-          path: 'basic',
-          name: 'BasicLazyDemo',
-          component: () => import('/@/views/demo/comp/lazy/index.vue'),
-          meta: {
-            title: t('routes.demo.comp.lazyBasic'),
-          },
-        },
-        {
-          path: 'transition',
-          name: 'BasicTransitionDemo',
-          component: () => import('/@/views/demo/comp/lazy/Transition.vue'),
-          meta: {
-            title: t('routes.demo.comp.lazyTransition'),
-          },
-        },
-      ],
-    },
-    {
-      path: 'verify',
-      name: 'VerifyDemo',
-      component: getParentLayout('VerifyDemo'),
-      redirect: '/comp/verify/drag',
-      meta: {
-        title: t('routes.demo.comp.verify'),
-      },
-      children: [
-        {
-          path: 'drag',
-          name: 'VerifyDragDemo',
-          component: () => import('/@/views/demo/comp/verify/index.vue'),
-          meta: {
-            title: t('routes.demo.comp.verifyDrag'),
-          },
-        },
-        {
-          path: 'rotate',
-          name: 'VerifyRotateDemo',
-          component: () => import('/@/views/demo/comp/verify/Rotate.vue'),
-          meta: {
-            title: t('routes.demo.comp.verifyRotate'),
-          },
-        },
-      ],
-    },
-  ],
-};
-
-export default comp;

+ 0 - 196
jeecgboot-vue3/src/router/routes/modules/demo/feat.ts

@@ -1,196 +0,0 @@
-import type { AppRouteModule } from '/@/router/types';
-
-import { getParentLayout, LAYOUT } from '/@/router/constant';
-import { t } from '/@/hooks/web/useI18n';
-
-const feat: AppRouteModule = {
-  path: '/feat',
-  name: 'FeatDemo',
-  component: LAYOUT,
-  redirect: '/feat/icon',
-  meta: {
-    orderNo: 19,
-    icon: 'ion:git-compare-outline',
-    title: t('routes.demo.feat.feat'),
-  },
-
-  children: [
-    {
-      path: 'ws',
-      name: 'WebSocket',
-      component: () => import('/@/views/demo/feat/ws/index.vue'),
-      meta: {
-        title: t('routes.demo.feat.ws'),
-      },
-    },
-    {
-      path: 'session-timeout',
-      name: 'SessionTimeout',
-      component: () => import('/@/views/demo/feat/session-timeout/index.vue'),
-      meta: {
-        title: t('routes.demo.feat.sessionTimeout'),
-      },
-    },
-
-    {
-      path: 'breadcrumb',
-      name: 'BreadcrumbDemo',
-      redirect: '/feat/breadcrumb/flat',
-      component: getParentLayout('BreadcrumbDemo'),
-      meta: {
-        title: t('routes.demo.feat.breadcrumb'),
-      },
-
-      children: [
-        {
-          path: 'flat',
-          name: 'BreadcrumbFlatDemo',
-          component: () => import('/@/views/demo/feat/breadcrumb/FlatList.vue'),
-          meta: {
-            title: t('routes.demo.feat.breadcrumbFlat'),
-          },
-        },
-        {
-          path: 'flatDetail',
-          name: 'BreadcrumbFlatDetailDemo',
-          component: () => import('/@/views/demo/feat/breadcrumb/FlatListDetail.vue'),
-          meta: {
-            title: t('routes.demo.feat.breadcrumbFlatDetail'),
-            hideMenu: true,
-            hideTab: true,
-            currentActiveMenu: '/feat/breadcrumb/flat',
-          },
-        },
-        {
-          path: 'children',
-          name: 'BreadcrumbChildrenDemo',
-          component: () => import('/@/views/demo/feat/breadcrumb/ChildrenList.vue'),
-          meta: {
-            title: t('routes.demo.feat.breadcrumbChildren'),
-          },
-          children: [
-            {
-              path: 'childrenDetail',
-              name: 'BreadcrumbChildrenDetailDemo',
-              component: () => import('/@/views/demo/feat/breadcrumb/ChildrenListDetail.vue'),
-              meta: {
-                currentActiveMenu: '/feat/breadcrumb/children',
-                title: t('routes.demo.feat.breadcrumbChildrenDetail'),
-                //hideTab: true,
-                // hideMenu: true,
-              },
-            },
-          ],
-        },
-      ],
-    },
-
-    {
-      path: 'context-menu',
-      name: 'ContextMenuDemo',
-      component: () => import('/@/views/demo/feat/context-menu/index.vue'),
-      meta: {
-        title: t('routes.demo.feat.contextMenu'),
-      },
-    },
-
-    {
-      path: 'copy',
-      name: 'CopyDemo',
-      component: () => import('/@/views/demo/feat/copy/index.vue'),
-      meta: {
-        title: t('routes.demo.feat.copy'),
-      },
-    },
-
-    {
-      path: 'watermark',
-      name: 'WatermarkDemo',
-      component: () => import('/@/views/demo/feat/watermark/index.vue'),
-      meta: {
-        title: t('routes.demo.feat.watermark'),
-      },
-    },
-
-    {
-      path: 'full-screen',
-      name: 'FullScreenDemo',
-      component: () => import('/@/views/demo/feat/full-screen/index.vue'),
-      meta: {
-        title: t('routes.demo.feat.fullScreen'),
-      },
-    },
-
-    {
-      path: '/error-log',
-      name: 'ErrorLog',
-      component: () => import('/@/views/sys/error-log/index.vue'),
-      meta: {
-        title: t('routes.demo.feat.errorLog'),
-      },
-    },
-    {
-      path: 'testTab/:id',
-      name: 'TestTab',
-      component: () => import('/@/views/demo/feat/tab-params/index.vue'),
-      meta: {
-        title: t('routes.demo.feat.tab'),
-        carryParam: true,
-        hidePathForChildren: true,
-      },
-      children: [
-        {
-          path: 'testTab/id1',
-          name: 'TestTab1',
-          component: () => import('/@/views/demo/feat/tab-params/index.vue'),
-          meta: {
-            title: t('routes.demo.feat.tab1'),
-            carryParam: true,
-            ignoreRoute: true,
-          },
-        },
-        {
-          path: 'testTab/id2',
-          name: 'TestTab2',
-          component: () => import('/@/views/demo/feat/tab-params/index.vue'),
-          meta: {
-            title: t('routes.demo.feat.tab2'),
-            carryParam: true,
-            ignoreRoute: true,
-          },
-        },
-      ],
-    },
-    {
-      path: 'testParam/:id',
-      name: 'TestParam',
-      component: getParentLayout('TestParam'),
-      meta: {
-        title: t('routes.demo.feat.menu'),
-        ignoreKeepAlive: true,
-      },
-      children: [
-        {
-          path: 'sub1',
-          name: 'TestParam_1',
-          component: () => import('/@/views/demo/feat/menu-params/index.vue'),
-          meta: {
-            title: t('routes.demo.feat.menu1'),
-            ignoreKeepAlive: true,
-          },
-        },
-        {
-          path: 'sub2',
-          name: 'TestParam_2',
-          component: () => import('/@/views/demo/feat/menu-params/index.vue'),
-          meta: {
-            title: t('routes.demo.feat.menu2'),
-            ignoreKeepAlive: true,
-          },
-        },
-      ],
-    },
-  ],
-};
-
-export default feat;

+ 0 - 48
jeecgboot-vue3/src/router/routes/modules/demo/iframe.ts

@@ -1,48 +0,0 @@
-import type { AppRouteModule } from '/@/router/types';
-
-import { LAYOUT } from '/@/router/constant';
-const IFrame = () => import('/@/views/sys/iframe/FrameBlank.vue');
-import { t } from '/@/hooks/web/useI18n';
-
-const iframe: AppRouteModule = {
-  path: '/frame',
-  name: 'Frame',
-  component: LAYOUT,
-  redirect: '/frame/doc',
-  meta: {
-    orderNo: 1000,
-    icon: 'ion:tv-outline',
-    title: t('routes.demo.iframe.frame'),
-  },
-
-  children: [
-    {
-      path: 'doc',
-      name: 'Doc',
-      component: IFrame,
-      meta: {
-        frameSrc: 'https://vvbin.cn/doc-next/',
-        title: t('routes.demo.iframe.doc'),
-      },
-    },
-    {
-      path: 'antv',
-      name: 'Antv',
-      component: IFrame,
-      meta: {
-        frameSrc: 'https://2x.antdv.com/docs/vue/introduce-cn/',
-        title: t('routes.demo.iframe.antv'),
-      },
-    },
-    {
-      path: 'https://vvbin.cn/doc-next/',
-      name: 'DocExternal',
-      component: IFrame,
-      meta: {
-        title: t('routes.demo.iframe.docExternal'),
-      },
-    },
-  ],
-};
-
-export default iframe;

+ 0 - 68
jeecgboot-vue3/src/router/routes/modules/demo/level.ts

@@ -1,68 +0,0 @@
-import type { AppRouteModule } from '/@/router/types';
-
-import { getParentLayout, LAYOUT } from '/@/router/constant';
-import { t } from '/@/hooks/web/useI18n';
-
-const permission: AppRouteModule = {
-  path: '/level',
-  name: 'Level',
-  component: LAYOUT,
-  redirect: '/level/menu1/menu1-1/menu1-1-1',
-  meta: {
-    orderNo: 2000,
-    icon: 'ion:menu-outline',
-    title: t('routes.demo.level.level'),
-  },
-
-  children: [
-    {
-      path: 'menu1',
-      name: 'Menu1Demo',
-      component: getParentLayout('Menu1Demo'),
-      meta: {
-        title: 'Menu1',
-      },
-      redirect: '/level/menu1/menu1-1/menu1-1-1',
-      children: [
-        {
-          path: 'menu1-1',
-          name: 'Menu11Demo',
-          component: getParentLayout('Menu11Demo'),
-          meta: {
-            title: 'Menu1-1',
-          },
-          redirect: '/level/menu1/menu1-1/menu1-1-1',
-          children: [
-            {
-              path: 'menu1-1-1',
-              name: 'Menu111Demo',
-              component: () => import('/@/views/demo/level/Menu111.vue'),
-              meta: {
-                title: 'Menu111',
-              },
-            },
-          ],
-        },
-        {
-          path: 'menu1-2',
-          name: 'Menu12Demo',
-          component: () => import('/@/views/demo/level/Menu12.vue'),
-          meta: {
-            title: 'Menu1-2',
-          },
-        },
-      ],
-    },
-    {
-      path: 'menu2',
-      name: 'Menu2Demo',
-      component: () => import('/@/views/demo/level/Menu2.vue'),
-      meta: {
-        title: 'Menu2',
-        // ignoreKeepAlive: true,
-      },
-    },
-  ],
-};
-
-export default permission;

+ 0 - 255
jeecgboot-vue3/src/router/routes/modules/demo/page.ts

@@ -1,255 +0,0 @@
-import type { AppRouteModule } from '/@/router/types';
-
-import { getParentLayout, LAYOUT } from '/@/router/constant';
-import { ExceptionEnum } from '/@/enums/exceptionEnum';
-import { t } from '/@/hooks/web/useI18n';
-
-const ExceptionPage = () => import('/@/views/sys/exception/Exception.vue');
-
-const page: AppRouteModule = {
-  path: '/page-demo',
-  name: 'PageDemo',
-  component: LAYOUT,
-  redirect: '/page-demo/form/basic',
-  meta: {
-    orderNo: 20,
-    icon: 'ion:aperture-outline',
-    title: t('routes.demo.page.page'),
-  },
-  children: [
-    // =============================form start=============================
-    {
-      path: 'form',
-      name: 'FormPage',
-      redirect: '/page-demo/form/basic',
-      component: getParentLayout('FormPage'),
-      meta: {
-        title: t('routes.demo.page.form'),
-      },
-      children: [
-        {
-          path: 'basic',
-          name: 'FormBasicPage',
-          component: () => import('/@/views/demo/page/form/basic/index.vue'),
-          meta: {
-            title: t('routes.demo.page.formBasic'),
-          },
-        },
-        {
-          path: 'step',
-          name: 'FormStepPage',
-          component: () => import('/@/views/demo/page/form/step/index.vue'),
-          meta: {
-            title: t('routes.demo.page.formStep'),
-          },
-        },
-        {
-          path: 'high',
-          name: 'FormHightPage',
-          component: () => import('/@/views/demo/page/form/high/index.vue'),
-          meta: {
-            title: t('routes.demo.page.formHigh'),
-          },
-        },
-      ],
-    },
-    // =============================form end=============================
-    // =============================desc start=============================
-    {
-      path: 'desc',
-      name: 'DescPage',
-      component: getParentLayout('DescPage'),
-      redirect: '/page-demo/desc/basic',
-      meta: {
-        title: t('routes.demo.page.desc'),
-      },
-      children: [
-        {
-          path: 'basic',
-          name: 'DescBasicPage',
-          component: () => import('/@/views/demo/page/desc/basic/index.vue'),
-          meta: {
-            title: t('routes.demo.page.descBasic'),
-          },
-        },
-        {
-          path: 'high',
-          name: 'DescHighPage',
-          component: () => import('/@/views/demo/page/desc/high/index.vue'),
-          meta: {
-            title: t('routes.demo.page.descHigh'),
-          },
-        },
-      ],
-    },
-    // =============================desc end=============================
-
-    // =============================result start=============================
-    {
-      path: 'result',
-      name: 'ResultPage',
-      redirect: '/page-demo/result/success',
-      component: getParentLayout('ResultPage'),
-
-      meta: {
-        title: t('routes.demo.page.result'),
-      },
-      children: [
-        {
-          path: 'success',
-          name: 'ResultSuccessPage',
-          component: () => import('/@/views/demo/page/result/success/index.vue'),
-          meta: {
-            title: t('routes.demo.page.resultSuccess'),
-          },
-        },
-        {
-          path: 'fail',
-          name: 'ResultFailPage',
-          component: () => import('/@/views/demo/page/result/fail/index.vue'),
-          meta: {
-            title: t('routes.demo.page.resultFail'),
-          },
-        },
-      ],
-    },
-    // =============================result end=============================
-
-    // =============================account start=============================
-    {
-      path: 'account',
-      name: 'AccountPage',
-      component: getParentLayout('AccountPage'),
-      redirect: '/page-demo/account/setting',
-      meta: {
-        title: t('routes.demo.page.account'),
-      },
-      children: [
-        {
-          path: 'center',
-          name: 'AccountCenterPage',
-          component: () => import('/@/views/demo/page/account/center/index.vue'),
-          meta: {
-            title: t('routes.demo.page.accountCenter'),
-          },
-        },
-        {
-          path: 'setting',
-          name: 'AccountSettingPage',
-          component: () => import('/@/views/demo/page/account/setting/index.vue'),
-          meta: {
-            title: t('routes.demo.page.accountSetting'),
-          },
-        },
-      ],
-    },
-    // =============================account end=============================
-    // =============================exception start=============================
-    {
-      path: 'exception',
-      name: 'ExceptionPage',
-      component: getParentLayout('ExceptionPage'),
-      redirect: '/page-demo/exception/404',
-      meta: {
-        title: t('routes.demo.page.exception'),
-      },
-      children: [
-        {
-          path: '403',
-          name: 'PageNotAccess',
-          component: ExceptionPage,
-          props: {
-            status: ExceptionEnum.PAGE_NOT_ACCESS,
-          },
-          meta: {
-            title: '403',
-          },
-        },
-        {
-          path: '404',
-          name: 'PageNotFound',
-          component: ExceptionPage,
-          props: {
-            status: ExceptionEnum.PAGE_NOT_FOUND,
-          },
-          meta: {
-            title: '404',
-          },
-        },
-        {
-          path: '500',
-          name: 'ServiceError',
-          component: ExceptionPage,
-          props: {
-            status: ExceptionEnum.ERROR,
-          },
-          meta: {
-            title: '500',
-          },
-        },
-        {
-          path: 'net-work-error',
-          name: 'NetWorkError',
-          component: ExceptionPage,
-          props: {
-            status: ExceptionEnum.NET_WORK_ERROR,
-          },
-          meta: {
-            title: t('routes.demo.page.netWorkError'),
-          },
-        },
-        {
-          path: 'not-data',
-          name: 'NotData',
-          component: ExceptionPage,
-          props: {
-            status: ExceptionEnum.PAGE_NOT_DATA,
-          },
-          meta: {
-            title: t('routes.demo.page.notData'),
-          },
-        },
-      ],
-    },
-    // =============================exception end=============================
-    // =============================list start=============================
-    {
-      path: 'list',
-      name: 'ListPage',
-      component: getParentLayout('ListPage'),
-      redirect: '/page-demo/list/card',
-      meta: {
-        title: t('routes.demo.page.list'),
-      },
-      children: [
-        {
-          path: 'basic',
-          name: 'ListBasicPage',
-          component: () => import('/@/views/demo/page/list/basic/index.vue'),
-          meta: {
-            title: t('routes.demo.page.listBasic'),
-          },
-        },
-        {
-          path: 'card',
-          name: 'ListCardPage',
-          component: () => import('/@/views/demo/page/list/card/index.vue'),
-          meta: {
-            title: t('routes.demo.page.listCard'),
-          },
-        },
-        {
-          path: 'search',
-          name: 'ListSearchPage',
-          component: () => import('/@/views/demo/page/list/search/index.vue'),
-          meta: {
-            title: t('routes.demo.page.listSearch'),
-          },
-        },
-      ],
-    },
-    // =============================list end=============================
-  ],
-};
-
-export default page;

+ 0 - 92
jeecgboot-vue3/src/router/routes/modules/demo/permission.ts

@@ -1,92 +0,0 @@
-import type { AppRouteModule } from '/@/router/types';
-
-import { getParentLayout, LAYOUT } from '/@/router/constant';
-import { RoleEnum } from '/@/enums/roleEnum';
-import { t } from '/@/hooks/web/useI18n';
-
-const permission: AppRouteModule = {
-  path: '/permission',
-  name: 'Permission',
-  component: LAYOUT,
-  redirect: '/permission/front/page',
-  meta: {
-    orderNo: 15,
-    icon: 'ion:key-outline',
-    title: t('routes.demo.permission.permission'),
-  },
-
-  children: [
-    {
-      path: 'front',
-      name: 'PermissionFrontDemo',
-      component: getParentLayout('PermissionFrontDemo'),
-      meta: {
-        title: t('routes.demo.permission.front'),
-      },
-      children: [
-        {
-          path: 'page',
-          name: 'FrontPageAuth',
-          component: () => import('/@/views/demo/permission/front/index.vue'),
-          meta: {
-            title: t('routes.demo.permission.frontPage'),
-          },
-        },
-        {
-          path: 'btn',
-          name: 'FrontBtnAuth',
-          component: () => import('/@/views/demo/permission/front/Btn.vue'),
-          meta: {
-            title: t('routes.demo.permission.frontBtn'),
-          },
-        },
-        {
-          path: 'auth-pageA',
-          name: 'FrontAuthPageA',
-          component: () => import('/@/views/demo/permission/front/AuthPageA.vue'),
-          meta: {
-            title: t('routes.demo.permission.frontTestA'),
-            roles: [RoleEnum.SUPER],
-          },
-        },
-        {
-          path: 'auth-pageB',
-          name: 'FrontAuthPageB',
-          component: () => import('/@/views/demo/permission/front/AuthPageB.vue'),
-          meta: {
-            title: t('routes.demo.permission.frontTestB'),
-            roles: [RoleEnum.TEST],
-          },
-        },
-      ],
-    },
-    {
-      path: 'back',
-      name: 'PermissionBackDemo',
-      component: getParentLayout('PermissionBackDemo'),
-      meta: {
-        title: t('routes.demo.permission.back'),
-      },
-      children: [
-        {
-          path: 'page',
-          name: 'BackAuthPage',
-          component: () => import('/@/views/demo/permission/back/index.vue'),
-          meta: {
-            title: t('routes.demo.permission.backPage'),
-          },
-        },
-        {
-          path: 'btn',
-          name: 'BackAuthBtn',
-          component: () => import('/@/views/demo/permission/back/Btn.vue'),
-          meta: {
-            title: t('routes.demo.permission.backBtn'),
-          },
-        },
-      ],
-    },
-  ],
-};
-
-export default permission;

+ 0 - 31
jeecgboot-vue3/src/router/routes/modules/demo/setup.ts

@@ -1,31 +0,0 @@
-import type { AppRouteModule } from '/@/router/types';
-
-import { LAYOUT } from '/@/router/constant';
-import { t } from '/@/hooks/web/useI18n';
-
-const setup: AppRouteModule = {
-  path: '/setup',
-  name: 'SetupDemo',
-  component: LAYOUT,
-  redirect: '/setup/index',
-  meta: {
-    orderNo: 90000,
-    hideChildrenInMenu: true,
-    icon: 'whh:paintroll',
-    title: t('routes.demo.setup.page'),
-  },
-  children: [
-    {
-      path: 'index',
-      name: 'SetupDemoPage',
-      component: () => import('/@/views/demo/setup/index.vue'),
-      meta: {
-        title: t('routes.demo.setup.page'),
-        icon: 'whh:paintroll',
-        hideMenu: true,
-      },
-    },
-  ],
-};
-
-export default setup;

+ 0 - 86
jeecgboot-vue3/src/router/routes/modules/demo/system.ts

@@ -1,86 +0,0 @@
-import type { AppRouteModule } from '/@/router/types';
-
-import { LAYOUT } from '/@/router/constant';
-import { t } from '/@/hooks/web/useI18n';
-
-const system: AppRouteModule = {
-  path: '/system',
-  name: 'System',
-  component: LAYOUT,
-  redirect: '/system/account',
-  meta: {
-    orderNo: 2000,
-    icon: 'ion:settings-outline',
-    title: t('routes.demo.system.moduleName'),
-  },
-  children: [
-    {
-      path: 'test',
-      name: 'TestManagement',
-      meta: {
-        title: t('routes.demo.system.test'),
-        ignoreKeepAlive: true,
-      },
-      component: () => import('/@/views/demo/system/test/index.vue'),
-    },
-    {
-      path: 'account',
-      name: 'AccountManagement',
-      meta: {
-        title: t('routes.demo.system.account'),
-        ignoreKeepAlive: false,
-      },
-      component: () => import('/@/views/demo/system/account/index.vue'),
-    },
-    {
-      path: 'account_detail/:id',
-      name: 'AccountDetail',
-      meta: {
-        hideMenu: true,
-        title: t('routes.demo.system.account_detail'),
-        ignoreKeepAlive: true,
-        showMenu: false,
-        currentActiveMenu: '/system/account',
-      },
-      component: () => import('/@/views/demo/system/account/AccountDetail.vue'),
-    },
-    {
-      path: 'role',
-      name: 'RoleManagement',
-      meta: {
-        title: t('routes.demo.system.role'),
-        ignoreKeepAlive: true,
-      },
-      component: () => import('/@/views/demo/system/role/index.vue'),
-    },
-    {
-      path: 'menu',
-      name: 'MenuManagement',
-      meta: {
-        title: t('routes.demo.system.menu'),
-        ignoreKeepAlive: true,
-      },
-      component: () => import('/@/views/demo/system/menu/index.vue'),
-    },
-    {
-      path: 'dept',
-      name: 'DeptManagement',
-      meta: {
-        title: t('routes.demo.system.dept'),
-        ignoreKeepAlive: true,
-      },
-      component: () => import('/@/views/demo/system/dept/index.vue'),
-    },
-    {
-      path: 'changePassword',
-      name: 'ChangePassword',
-      meta: {
-        title: t('routes.demo.system.password'),
-        ignoreKeepAlive: true,
-      },
-      component: () => import('/@/views/demo/system/password/index.vue'),
-    },
-  ],
-};
-
-export default system;

+ 0 - 23
jeecgboot-vue3/src/router/routes/staticRouter.ts

@@ -1,23 +0,0 @@
-import type { AppRouteRecordRaw } from '/@/router/types';
-import { LAYOUT } from '/@/router/constant';
-
-export const AI_ROUTE: AppRouteRecordRaw = {
-  path: '',
-  name: 'ai-parent',
-  component: LAYOUT,
-  meta: {
-    title: 'ai',
-  },
-  children: [
-    {
-      path: '/ai',
-      name: 'ai',
-      component: () => import('/@/views/dashboard/ai/index.vue'),
-      meta: {
-        title: 'AI助手',
-      },
-    },
-  ],
-};
-
-export const staticRoutesList = [AI_ROUTE];

+ 4 - 4
jeecgboot-vue3/src/store/modules/permission.ts

@@ -15,7 +15,7 @@ import { PermissionModeEnum } from '/@/enums/appEnum';
 
 import { asyncRoutes } from '/@/router/routes';
 import { ERROR_LOG_ROUTE, PAGE_NOT_FOUND_ROUTE } from '/@/router/routes/basic';
-import { staticRoutesList } from '../../router/routes/staticRouter';
+// import { staticRoutesList } from '../../router/routes/staticRouter';
 
 import { filter } from '/@/utils/helper/treeHelper';
 
@@ -128,7 +128,7 @@ export const usePermissionStore = defineStore({
       const codeList = systemPermission.codeList;
       this.setPermCodeList(codeList);
       this.setAuthData(systemPermission);
-      
+
       //菜单路由
       const routeList = systemPermission.menu;
       return routeList;
@@ -211,7 +211,7 @@ export const usePermissionStore = defineStore({
         // 后台菜单构建
         case PermissionModeEnum.BACK:
           const { createMessage, createWarningModal } = useMessage();
-          console.log(" --- 构建后台路由菜单 --- ")
+          console.log(' --- 构建后台路由菜单 --- ');
           // 菜单加载提示
           // createMessage.loading({
           //   content: t('sys.app.menuLoading'),
@@ -279,7 +279,7 @@ export const usePermissionStore = defineStore({
 
           routeList = flatMultiLevelRoutes(routeList);
           // update-begin--author:liaozhiyang---date:20240529---for:【TV360X-522】ai助手路由写死在前端
-          routes = [PAGE_NOT_FOUND_ROUTE, ...routeList, ...staticRoutesList];
+          routes = [PAGE_NOT_FOUND_ROUTE, ...routeList];
           // update-end--author:liaozhiyang---date:20240529---for:【TV360X-522】ai助手路由写死在前端
           break;
       }

+ 10 - 0
jeecgboot-vue3/src/views/dashboard/Home/index.vue

@@ -0,0 +1,10 @@
+<template>
+  <div class="flex justify-center items-center h-[calc(100%-60px)]">
+    <TransitionGroup appear tag="div" enter-active-class="animate__animated animate__bounceInLeft">
+      <img src="@/assets/svg/login-box-bg.svg" class="w-600px" />
+      <div class="text-3xl text-black text-center" key="0">合同管理系统</div>
+    </TransitionGroup>
+  </div>
+</template>
+
+<style lang="less" scoped></style>