From 4612e5544bcd626d686972e5cb874d0aa4af08b3 Mon Sep 17 00:00:00 2001 From: kailong321200875 <321200875@qq.com> Date: Sat, 15 Jan 2022 14:24:50 +0800 Subject: [PATCH] feat(Breadcrumbe): Add Breadcrumb component style: change function to arrow function --- mock/user/index.ts | 12 + pnpm-lock.yaml | 73 +++--- src/App.vue | 2 +- src/api/login/index.ts | 4 + src/components/Breadcrumb/src/Breadcrumb.vue | 89 ++++++++ src/components/Breadcrumb/src/helper.ts | 31 +++ src/components/Collapse/src/Collapse.vue | 3 +- .../ConfigGlobal/src/ConfigGlobal.vue | 27 ++- src/components/Form/src/Form.vue | 12 +- .../Form/src/components/useRenderChcekbox.tsx | 4 +- .../Form/src/components/useRenderRadio.tsx | 4 +- .../Form/src/components/useRenderSelect.tsx | 6 +- src/components/Form/src/helper.ts | 14 +- src/components/Icon/src/Icon.vue | 9 +- .../InputPassword/src/InputPassword.vue | 15 +- .../LocaleDropdown/src/LocaleDropdown.vue | 10 +- src/components/Menu/src/Menu.vue | 13 +- .../Menu/src/components/useRenderMenuItem.tsx | 6 +- .../src/components/useRenderMenuTitle.tsx | 8 +- src/components/Menu/src/helper.ts | 48 +--- src/components/Screenfull/src/Screenfull.vue | 2 +- .../SizeDropdown/src/SizeDropdown.vue | 2 +- src/components/TagsView/src/TagsView.vue | 2 +- .../ThemeSwitch/src/ThemeSwitch.vue | 9 +- src/components/UserInfo/src/UserInfo.vue | 14 +- src/components/index.ts | 2 +- src/config/app.ts | 4 +- src/hooks/web/useAxios.ts | 4 +- src/hooks/web/useCache.ts | 2 +- src/hooks/web/useConfigGlobal.ts | 2 +- src/hooks/web/useDesign.ts | 4 +- src/hooks/web/useForm.ts | 6 +- src/hooks/web/useI18n.ts | 8 +- src/hooks/web/useIcon.ts | 2 +- src/hooks/web/useLocale.ts | 6 +- src/hooks/web/useNProgress.ts | 11 +- src/hooks/web/useTitle.ts | 2 +- src/layout/Layout.vue | 42 ++-- src/main.ts | 2 +- src/plugins/elementPlus/index.ts | 2 +- src/plugins/vueI18n/helper.ts | 2 +- src/plugins/vueI18n/index.ts | 4 +- src/router/index.ts | 4 +- src/store/index.ts | 2 +- src/store/modules/app.ts | 8 +- src/store/modules/locale.ts | 2 +- src/store/modules/permission.ts | 2 +- src/store/modules/tagsView.ts | 2 +- src/utils/color.ts | 22 +- src/utils/index.ts | 8 +- src/utils/is.ts | 42 ++-- src/utils/routerHelper.ts | 29 +-- src/utils/tree.ts | 207 ++++++++++++++++++ src/utils/tsxHelper.ts | 2 +- src/views/Login/components/LoginForm.vue | 2 +- 55 files changed, 586 insertions(+), 270 deletions(-) create mode 100644 src/components/Breadcrumb/src/helper.ts create mode 100644 src/utils/tree.ts diff --git a/mock/user/index.ts b/mock/user/index.ts index 26aa0c8a9..55743009f 100644 --- a/mock/user/index.ts +++ b/mock/user/index.ts @@ -50,5 +50,17 @@ export default [ } } } + }, + // 退出接口 + { + url: '/user/loginOut', + method: 'get', + timeout, + response: () => { + return { + code: result_code, + data: null + } + } } ] as MockMethod[] diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 44987e6be..10ea1b03c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -33,6 +33,7 @@ specifiers: lodash-es: ^4.17.21 mockjs: ^1.1.0 nprogress: ^0.2.0 + path-to-regexp: ^6.2.0 pinia: ^2.0.9 postcss: ^8.4.5 postcss-html: ^1.3.0 @@ -41,7 +42,6 @@ specifiers: pretty-quick: ^3.1.3 qs: ^6.10.3 rimraf: ^3.0.2 - screenfull: ^6.0.0 stylelint: ^14.2.0 stylelint-config-html: ^1.0.0 stylelint-config-prettier: ^9.0.3 @@ -74,9 +74,9 @@ dependencies: lodash-es: registry.nlark.com/lodash-es/4.17.21 mockjs: registry.npmmirror.com/mockjs/1.1.0 nprogress: registry.npmmirror.com/nprogress/0.2.0 + path-to-regexp: registry.npmmirror.com/path-to-regexp/6.2.0 pinia: registry.npmmirror.com/pinia/2.0.9_typescript@4.5.4+vue@3.2.26 qs: registry.npmmirror.com/qs/6.10.3 - screenfull: registry.npmmirror.com/screenfull/6.0.0 vue: registry.npmmirror.com/vue/3.2.26 vue-i18n: registry.npmmirror.com/vue-i18n/9.1.9_vue@3.2.26 vue-router: registry.npmmirror.com/vue-router/4.0.12_vue@3.2.26 @@ -1732,7 +1732,7 @@ packages: { integrity: sha1-0t5eA0JOcH3BDHQGjd7a5wh0Gyc=, registry: https://registry.npm.taobao.org/, - tarball: https://registry.nlark.com/eslint-utils/download/eslint-utils-2.1.0.tgz + tarball: https://registry.nlark.com/eslint-utils/download/eslint-utils-2.1.0.tgz?cache=0&sync_timestamp=1631600361784&other_urls=https%3A%2F%2Fregistry.nlark.com%2Feslint-utils%2Fdownload%2Feslint-utils-2.1.0.tgz } name: eslint-utils version: 2.1.0 @@ -4246,17 +4246,6 @@ packages: version: 1.0.7 dev: true - registry.nlark.com/path-to-regexp/6.2.0: - resolution: - { - integrity: sha1-97OAMzYQTDRoia3s5hRmkjBkXzg=, - registry: https://registry.npm.taobao.org/, - tarball: https://registry.nlark.com/path-to-regexp/download/path-to-regexp-6.2.0.tgz - } - name: path-to-regexp - version: 6.2.0 - dev: true - registry.nlark.com/path-type/4.0.0: resolution: { @@ -4959,7 +4948,7 @@ packages: { integrity: sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=, registry: https://registry.npm.taobao.org/, - tarball: https://registry.nlark.com/semver/download/semver-5.7.1.tgz?cache=0&sync_timestamp=1631500167672&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsemver%2Fdownload%2Fsemver-5.7.1.tgz + tarball: https://registry.nlark.com/semver/download/semver-5.7.1.tgz } name: semver version: 5.7.1 @@ -4971,7 +4960,7 @@ packages: { integrity: sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=, registry: https://registry.npm.taobao.org/, - tarball: https://registry.nlark.com/semver/download/semver-6.3.0.tgz?cache=0&sync_timestamp=1631500167672&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsemver%2Fdownload%2Fsemver-6.3.0.tgz + tarball: https://registry.nlark.com/semver/download/semver-6.3.0.tgz } name: semver version: 6.3.0 @@ -7066,8 +7055,8 @@ packages: vue-i18n: optional: true dependencies: - '@intlify/message-compiler': registry.npmmirror.com/@intlify/message-compiler/9.2.0-beta.27 - '@intlify/shared': registry.npmmirror.com/@intlify/shared/9.2.0-beta.27 + '@intlify/message-compiler': registry.npmmirror.com/@intlify/message-compiler/9.2.0-beta.28 + '@intlify/shared': registry.npmmirror.com/@intlify/shared/9.2.0-beta.28 jsonc-eslint-parser: registry.npmmirror.com/jsonc-eslint-parser/1.4.1 source-map: registry.nlark.com/source-map/0.6.1 vue-i18n: registry.npmmirror.com/vue-i18n/9.1.9_vue@3.2.26 @@ -7123,18 +7112,18 @@ packages: source-map: registry.nlark.com/source-map/0.6.1 dev: false - registry.npmmirror.com/@intlify/message-compiler/9.2.0-beta.27: + registry.npmmirror.com/@intlify/message-compiler/9.2.0-beta.28: resolution: { - integrity: sha512-T3mBTm0559VX6l+lh8p5gDJ9/IS1XbVXeeMNJ2zTzxrf4lXg8OuotNjaxG3ZsuauQ5OqqlArkMYryXGyZnHolA==, + integrity: sha512-NBH9fZyitN2cijGt8bmU1W7ZPdhKbgW01L1RxJKFJW0cRaCmknJq63Aif1Q6xcxKt9ZhPbvIKHgPGzg1nWMfeA==, registry: https://registry.npm.taobao.org/, - tarball: https://registry.npmmirror.com/@intlify/message-compiler/download/@intlify/message-compiler-9.2.0-beta.27.tgz + tarball: https://registry.npmmirror.com/@intlify/message-compiler/download/@intlify/message-compiler-9.2.0-beta.28.tgz } name: '@intlify/message-compiler' - version: 9.2.0-beta.27 + version: 9.2.0-beta.28 engines: { node: '>= 12' } dependencies: - '@intlify/shared': registry.npmmirror.com/@intlify/shared/9.2.0-beta.27 + '@intlify/shared': registry.npmmirror.com/@intlify/shared/9.2.0-beta.28 source-map: registry.nlark.com/source-map/0.6.1 dev: true @@ -7178,15 +7167,15 @@ packages: engines: { node: '>= 10' } dev: false - registry.npmmirror.com/@intlify/shared/9.2.0-beta.27: + registry.npmmirror.com/@intlify/shared/9.2.0-beta.28: resolution: { - integrity: sha512-+Av77mIHy0qFkAq96mMAQGYcColMGN7e5+rUsyn3XxBw6oC3AGqYn/cQ6U/T3qOrzcHgcA+etAaLN3IxFqkJDw==, + integrity: sha512-JBMcoj1D4kSAma7Vb0+d8z6lPLIn7hIdZJPxbU8bgeMMniwKLoIS/jGlEfrZihsB5+otckPeQp203z8skwVS0w==, registry: https://registry.npm.taobao.org/, - tarball: https://registry.npmmirror.com/@intlify/shared/download/@intlify/shared-9.2.0-beta.27.tgz + tarball: https://registry.npmmirror.com/@intlify/shared/download/@intlify/shared-9.2.0-beta.28.tgz } name: '@intlify/shared' - version: 9.2.0-beta.27 + version: 9.2.0-beta.28 engines: { node: '>= 12' } dev: true @@ -7212,7 +7201,7 @@ packages: optional: true dependencies: '@intlify/bundle-utils': registry.npmmirror.com/@intlify/bundle-utils/2.2.0_vue-i18n@9.1.9 - '@intlify/shared': registry.npmmirror.com/@intlify/shared/9.2.0-beta.27 + '@intlify/shared': registry.npmmirror.com/@intlify/shared/9.2.0-beta.28 '@rollup/pluginutils': registry.npmmirror.com/@rollup/pluginutils/4.1.2 debug: registry.npmmirror.com/debug/4.3.3 fast-glob: registry.nlark.com/fast-glob/3.2.7 @@ -9689,7 +9678,7 @@ packages: { integrity: sha1-MOvR73wv3/AcOk8VEESvJfqwUj4=, registry: https://registry.npm.taobao.org/, - tarball: https://registry.npmmirror.com/eslint-visitor-keys/download/eslint-visitor-keys-1.3.0.tgz + tarball: https://registry.npmmirror.com/eslint-visitor-keys/download/eslint-visitor-keys-1.3.0.tgz?cache=0&sync_timestamp=1636378650851&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Feslint-visitor-keys%2Fdownload%2Feslint-visitor-keys-1.3.0.tgz } name: eslint-visitor-keys version: 1.3.0 @@ -9701,7 +9690,7 @@ packages: { integrity: sha1-9lMoJZMFknOSyTjtROsKXJsr0wM=, registry: https://registry.npm.taobao.org/, - tarball: https://registry.npmmirror.com/eslint-visitor-keys/download/eslint-visitor-keys-2.1.0.tgz + tarball: https://registry.npmmirror.com/eslint-visitor-keys/download/eslint-visitor-keys-2.1.0.tgz?cache=0&sync_timestamp=1636378650851&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Feslint-visitor-keys%2Fdownload%2Feslint-visitor-keys-2.1.0.tgz } name: eslint-visitor-keys version: 2.1.0 @@ -11134,6 +11123,16 @@ packages: engines: { node: '>=8' } dev: true + registry.npmmirror.com/path-to-regexp/6.2.0: + resolution: + { + integrity: sha512-f66KywYG6+43afgE/8j/GoiNyygk/bnoCbps++3ErRKsIYkGGupyv07R2Ok5m9i67Iqc+T2g1eAUGUPzWhYTyg==, + registry: https://registry.npm.taobao.org/, + tarball: https://registry.npmmirror.com/path-to-regexp/download/path-to-regexp-6.2.0.tgz + } + name: path-to-regexp + version: 6.2.0 + registry.npmmirror.com/picocolors/1.0.0: resolution: { @@ -11609,18 +11608,6 @@ packages: tslib: registry.npmmirror.com/tslib/2.3.1 dev: true - registry.npmmirror.com/screenfull/6.0.0: - resolution: - { - integrity: sha512-LGY0nhNQkC4FX4DT4pZdJ5cZH5EOz9Gfh9KcVMl779pS677k4IV1Wv7sY/CwC9VKFT21fYgCh7zkTVVefi5XKA==, - registry: https://registry.npm.taobao.org/, - tarball: https://registry.npmmirror.com/screenfull/download/screenfull-6.0.0.tgz - } - name: screenfull - version: 6.0.0 - engines: { node: ^14.13.1 || >=16.0.0 } - dev: false - registry.npmmirror.com/shebang-regex/3.0.0: resolution: { @@ -12307,7 +12294,7 @@ packages: esbuild: registry.npmmirror.com/esbuild/0.11.3 fast-glob: registry.nlark.com/fast-glob/3.2.7 mockjs: registry.npmmirror.com/mockjs/1.1.0 - path-to-regexp: registry.nlark.com/path-to-regexp/6.2.0 + path-to-regexp: registry.npmmirror.com/path-to-regexp/6.2.0 vite: registry.npmmirror.com/vite/2.7.10_less@4.1.2 transitivePeerDependencies: - rollup diff --git a/src/App.vue b/src/App.vue index f19df4d66..9a798f416 100644 --- a/src/App.vue +++ b/src/App.vue @@ -8,7 +8,7 @@ const appStore = useAppStore() const size = computed(() => appStore.size) -function initDark() { +const initDark = () => { const isDarkTheme = isDark() appStore.setIsDark(isDarkTheme) } diff --git a/src/api/login/index.ts b/src/api/login/index.ts index a676dfe69..c2a433e84 100644 --- a/src/api/login/index.ts +++ b/src/api/login/index.ts @@ -9,3 +9,7 @@ export const loginApi = (data: UserLoginType) => { UserLoginType >) } + +export const loginOutApi = () => { + return request({ url: '/user/loginOut', method: 'get' }) +} diff --git a/src/components/Breadcrumb/src/Breadcrumb.vue b/src/components/Breadcrumb/src/Breadcrumb.vue index e69de29bb..031721eb2 100644 --- a/src/components/Breadcrumb/src/Breadcrumb.vue +++ b/src/components/Breadcrumb/src/Breadcrumb.vue @@ -0,0 +1,89 @@ + + + diff --git a/src/components/Breadcrumb/src/helper.ts b/src/components/Breadcrumb/src/helper.ts new file mode 100644 index 000000000..c290c7eb3 --- /dev/null +++ b/src/components/Breadcrumb/src/helper.ts @@ -0,0 +1,31 @@ +import { pathResolve } from '@/utils/routerHelper' +import type { RouteMeta } from 'vue-router' + +export const filterBreadcrumb = ( + routes: AppRouteRecordRaw[], + parentPath = '' +): AppRouteRecordRaw[] => { + const res: AppRouteRecordRaw[] = [] + + for (const route of routes) { + const meta = route?.meta as RouteMeta + if (meta.hidden && !meta.showMainRoute) { + continue + } + + const data: AppRouteRecordRaw = + !meta.alwaysShow && route.children?.length === 1 + ? { ...route.children[0], path: pathResolve(route.path, route.children[0].path) } + : { ...route } + + data.path = pathResolve(parentPath, data.path) + + if (data.children) { + data.children = filterBreadcrumb(data.children, data.path) + } + if (data) { + res.push(data) + } + } + return res +} diff --git a/src/components/Collapse/src/Collapse.vue b/src/components/Collapse/src/Collapse.vue index a7458ae35..92a2a22b8 100644 --- a/src/components/Collapse/src/Collapse.vue +++ b/src/components/Collapse/src/Collapse.vue @@ -1,13 +1,12 @@