From c1cdc3a9ed673d0fd84aa1eaa9fc72468bd5aaf9 Mon Sep 17 00:00:00 2001 From: Soybean <2570172956@qq.com> Date: Thu, 16 Sep 2021 08:25:07 +0800 Subject: [PATCH] =?UTF-8?q?feat(components):=20=E6=B7=BB=E5=8A=A0=E9=9D=A2?= =?UTF-8?q?=E5=8C=85=E5=B1=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cz-config.js | 4 +- README.md | 1 + build/plugins/html.ts | 2 +- index.html | 20 +++- public/resource/loading.css | 90 ++++++++++++++++++ public/resource/logo.png | Bin 0 -> 11341 bytes src/interface/common.ts | 4 +- .../components/GlobalBreadcrumb.vue | 66 +++++++++++++ .../GlobalHeader/components/index.ts | 3 +- .../components/GlobalHeader/index.vue | 7 +- src/router/menus.ts | 2 +- src/router/routes.ts | 19 ++-- 12 files changed, 195 insertions(+), 23 deletions(-) create mode 100644 public/resource/loading.css create mode 100644 public/resource/logo.png create mode 100644 src/layouts/BasicLayout/components/GlobalHeader/components/GlobalBreadcrumb.vue diff --git a/.cz-config.js b/.cz-config.js index d51aaae8..42a3e376 100644 --- a/.cz-config.js +++ b/.cz-config.js @@ -2,7 +2,7 @@ module.exports = { // type 类型(定义之后,可通过上下键选择) types: [ { value: 'feat', name: 'feat: 新增功能' }, - { value: 'fix', name: 'fix: 修复 bug' }, + { value: 'fix', name: 'fix: 修复bug' }, { value: 'docs', name: 'docs: 文档变更' }, { value: 'style', name: 'style: 代码格式(不影响功能,例如空格、分号等格式修正)' }, { value: 'refactor', name: 'refactor: 代码重构(不包括 bug 修复、功能新增)' }, @@ -20,7 +20,7 @@ module.exports = { ['components', '组件相关'], ['hooks', 'hook 相关'], ['utils', 'utils 相关'], - ['element-ui', '对 element-ui 的调整'], + ['types', 'ts类型相关'], ['styles', '样式相关'], ['deps', '项目依赖'], ['auth', '对 auth 修改'], diff --git a/README.md b/README.md index 53577a38..ca5caee9 100644 --- a/README.md +++ b/README.md @@ -72,6 +72,7 @@ soybean-admin │ │ ├── dark-mode.ts //windicss暗黑模式插件 │ │ └── smooth-scroll.ts //滚动平滑插件 │ ├── router //vue路由 +│ │ ├── menus.ts //菜单 │ │ ├── permission.ts //路由守卫相关函数 │ │ └── routes.ts //声明的路由 │ ├── service //网络请求 diff --git a/build/plugins/html.ts b/build/plugins/html.ts index 05f9581b..b992212c 100644 --- a/build/plugins/html.ts +++ b/build/plugins/html.ts @@ -6,7 +6,7 @@ export default [ injectHtml({ injectData: { title: viteEnv.VITE_APP_TITLE, - appName: viteEnv.VITE_APP_TITLE_Label + appName: viteEnv.VITE_APP_TITLE_LABEL } }) ]; diff --git a/index.html b/index.html index 5a9c3245..1efb0097 100644 --- a/index.html +++ b/index.html @@ -8,7 +8,25 @@ -
+
+ +
+ +
+
+ + + + +
+
+

<%= appName %>

+ +
+ +
diff --git a/public/resource/loading.css b/public/resource/loading.css new file mode 100644 index 00000000..b990f450 --- /dev/null +++ b/public/resource/loading.css @@ -0,0 +1,90 @@ +.app-loading { + position: fixed; + left: 0; + top: 0; + z-index: -1; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + width: 100%; + height: 100%; +} +.app-loading_logo { + width: 128px; + height: 128px; +} +.app-loading__dot-wrapper { + width: 56px; + height: 56px; + margin: 36px 0; +} +.app-loading__dot { + position: relative; + height: 100%; + transform: rotate(45deg); + animation-name: loadingRotate; + animation-duration: 1.2s; + animation-iteration-count: infinite; + animation-timing-function: linear; +} +@keyframes loadingRotate { + to { + -webkit-transform: rotate(405deg); + transform: rotate(405deg); + } +} +@-webkit-keyframes loadingRotate { + to { + -webkit-transform: rotate(405deg); + transform: rotate(405deg); + } +} +.app-loading__dot > i { + position: absolute; + display: block; + width: 18px; + height: 18px; + background: #1890ff; + border-radius: 50%; + -webkit-transform: scale(0.75); + transform: scale(0.75); + transform-origin: 50% 50%; + opacity: 0.3; + animation: spinOpacity 1s infinite linear alternate; +} +@keyframes spinOpacity { + to { + opacity: 1; + } +} +@-webkit-keyframes spinOpacity { + to { + opacity: 1; + } +} +.delay-400 { + animation-delay: 0.4s !important; +} +.delay-800 { + animation-delay: 0.8s !important; +} +.delay-1200 { + animation-delay: 1.2s !important; +} +.left { + left: 0; +} +.right { + right: 0; +} +.top { + top: 0; +} +.bottom { + bottom: 0; +} +.app-loading_title { + font-size: 28px; + color: #646464; +} diff --git a/public/resource/logo.png b/public/resource/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..6641c8273c22557208827ac4c1e8c60dd6314920 GIT binary patch literal 11341 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 + + + + + + + diff --git a/src/layouts/BasicLayout/components/GlobalHeader/components/index.ts b/src/layouts/BasicLayout/components/GlobalHeader/components/index.ts index 5937cc97..d86b6749 100644 --- a/src/layouts/BasicLayout/components/GlobalHeader/components/index.ts +++ b/src/layouts/BasicLayout/components/GlobalHeader/components/index.ts @@ -1,3 +1,4 @@ +import GlobalBreadcrumb from './GlobalBreadcrumb.vue'; import UserAvatar from './UserAvatar.vue'; import MenuCollapse from './MenuCollapse.vue'; import FullScreen from './FullScreen.vue'; @@ -5,4 +6,4 @@ import SettingDrawerButton from './SettingDrawerButton.vue'; import GihubSite from './GihubSite.vue'; import HeaderItem from './HeaderItem.vue'; -export { UserAvatar, MenuCollapse, FullScreen, SettingDrawerButton, GihubSite, HeaderItem }; +export { GlobalBreadcrumb, UserAvatar, MenuCollapse, FullScreen, SettingDrawerButton, GihubSite, HeaderItem }; diff --git a/src/layouts/BasicLayout/components/GlobalHeader/index.vue b/src/layouts/BasicLayout/components/GlobalHeader/index.vue index 964ff445..5a020afa 100644 --- a/src/layouts/BasicLayout/components/GlobalHeader/index.vue +++ b/src/layouts/BasicLayout/components/GlobalHeader/index.vue @@ -5,7 +5,10 @@ - +
+ + +
@@ -20,7 +23,7 @@ import { computed } from 'vue'; import { NLayoutHeader } from 'naive-ui'; import { useThemeStore } from '@/store'; -import { UserAvatar, MenuCollapse, FullScreen, GihubSite, SettingDrawerButton } from './components'; +import { GlobalBreadcrumb, UserAvatar, MenuCollapse, FullScreen, GihubSite, SettingDrawerButton } from './components'; import { GlobalLogo } from '../common'; defineProps({ diff --git a/src/router/menus.ts b/src/router/menus.ts index 0ff90f65..5057093f 100644 --- a/src/router/menus.ts +++ b/src/router/menus.ts @@ -31,7 +31,7 @@ export function transformRouteToMenu(routes: CustomRoute[]) { /** 判断路由是否作为菜单 */ function asMenu(route: CustomRoute) { - return Boolean(route.meta?.asMenu); + return !route.meta?.isNotMenu; } /** 给菜单添加可选属性 */ diff --git a/src/router/routes.ts b/src/router/routes.ts index 7732fbae..b0480320 100644 --- a/src/router/routes.ts +++ b/src/router/routes.ts @@ -91,7 +91,7 @@ export const customRoutes: CustomRoute[] = [ path: EnumRoutePath.root, redirect: { name: RouteNameMap.get('dashboard-analysis') }, meta: { - asMenu: false + isNotMenu: true } }, { @@ -101,7 +101,6 @@ export const customRoutes: CustomRoute[] = [ redirect: { name: RouteNameMap.get('dashboard-analysis') }, meta: { title: EnumRouteTitle.dashboard, - asMenu: true, icon: Dashboard }, children: [ @@ -110,8 +109,7 @@ export const customRoutes: CustomRoute[] = [ path: EnumRoutePath['dashboard-analysis'], component: () => import('@/views/dashboard/analysis/index.vue'), meta: { - title: EnumRouteTitle['dashboard-analysis'], - asMenu: true + title: EnumRouteTitle['dashboard-analysis'] } }, { @@ -119,8 +117,7 @@ export const customRoutes: CustomRoute[] = [ path: EnumRoutePath['dashboard-workbench'], component: () => import('@/views/dashboard/workbench/index.vue'), meta: { - title: EnumRouteTitle['dashboard-workbench'], - asMenu: true + title: EnumRouteTitle['dashboard-workbench'] } } ] @@ -131,7 +128,6 @@ export const customRoutes: CustomRoute[] = [ component: BasicLayout, meta: { title: EnumRouteTitle.exception, - asMenu: true, icon: ExceptionOutlined }, children: [ @@ -141,8 +137,7 @@ export const customRoutes: CustomRoute[] = [ component: () => import('@/views/system/exception/403.vue'), meta: { title: EnumRouteTitle['exception-403'], - fullPage: true, - asMenu: true + fullPage: true } }, { @@ -151,8 +146,7 @@ export const customRoutes: CustomRoute[] = [ component: () => import('@/views/system/exception/404.vue'), meta: { title: EnumRouteTitle['exception-404'], - fullPage: true, - asMenu: true + fullPage: true } }, { @@ -161,8 +155,7 @@ export const customRoutes: CustomRoute[] = [ component: () => import('@/views/system/exception/500.vue'), meta: { title: EnumRouteTitle['exception-500'], - fullPage: true, - asMenu: true + fullPage: true } } ]