From 112f862988109250cd5d2f160f3d1ecfab8ffd3b Mon Sep 17 00:00:00 2001
From: iczer <1126263215@qq.com>
Date: Tue, 30 Jun 2020 16:16:34 +0800
Subject: [PATCH] chore: modify the i18n implementation logic of PageLayout
component :star2:
---
src/components/menu/menu.js | 6 ++--
src/components/page/PageHeader.vue | 12 ++-----
src/layouts/PageLayout.vue | 55 ++++++++++++++++++++++++------
src/layouts/PageView.vue | 41 +++++++---------------
src/router/index.js | 3 +-
5 files changed, 62 insertions(+), 55 deletions(-)
diff --git a/src/components/menu/menu.js b/src/components/menu/menu.js
index e0dc9b7..7007a71 100644
--- a/src/components/menu/menu.js
+++ b/src/components/menu/menu.js
@@ -3,7 +3,7 @@
* menuOptions示例:
* [
* {
- * title: '菜单标题',
+ * name: '菜单名称',
* path: '菜单路由',
* meta: {
* icon: '菜单图标',
@@ -12,7 +12,7 @@
* children: [子菜单配置]
* },
* {
- * title: '菜单标题',
+ * name: '菜单名称',
* path: '菜单路由',
* meta: {
* icon: '菜单图标',
@@ -37,8 +37,6 @@ const {Item, SubMenu} = Menu
export default {
name: 'IMenu',
- i18n: {
- },
props: {
options: {
type: Array,
diff --git a/src/components/page/PageHeader.vue b/src/components/page/PageHeader.vue
index a8397b1..5920abb 100644
--- a/src/components/page/PageHeader.vue
+++ b/src/components/page/PageHeader.vue
@@ -3,9 +3,8 @@
-
- {{$t('home.name')}}
- {{$t(item.path.substring(1).replace(new RegExp('/', 'g'), '.') + '.name')}}
+
+ {{item}}
@@ -48,13 +47,6 @@ export default {
type: String,
required: false
},
- i18n: Object
- },
- created() {
- let i18n = this.i18n
- Object.keys(i18n).forEach(key => {
- this.$i18n.mergeLocaleMessage(key, i18n[key])
- })
},
computed: {
layout () {
diff --git a/src/layouts/PageLayout.vue b/src/layouts/PageLayout.vue
index ad5df11..a4b038e 100644
--- a/src/layouts/PageLayout.vue
+++ b/src/layouts/PageLayout.vue
@@ -1,6 +1,6 @@
-
+
@@ -28,22 +28,55 @@ export default {
props: ['desc', 'logo', 'title', 'avatar', 'linkList', 'extraImage'],
data () {
return {
- breadcrumb: []
+ page: {}
}
},
- computed: {
- ...mapState('setting', ['layout', 'routesI18n'])
+ watch: {
+ $route() {
+ this.page = this.$route.meta.page
+ }
},
- created () {
- this.getBreadcrumb()
+ created() {
+ let i18n = this.routesI18n
+ Object.keys(i18n).forEach(key => {
+ this.$i18n.mergeLocaleMessage(key, i18n[key])
+ })
+ this.page = this.$route.meta.page
},
- updated () {
- this.getBreadcrumb()
+ computed: {
+ ...mapState('setting', ['layout', 'routesI18n']),
+ pageTitle() {
+ let pageTitle = this.page && this.page.title
+ return this.title || this.$t(pageTitle) || this.routeName
+ },
+ routeName() {
+ return this.$t(this.$route.path.substring(1).replace(new RegExp('/', 'g'), '.') + '.name')
+ },
+ breadcrumb() {
+ let page = this.page
+ let breadcrumb = page && page.breadcrumb
+ if (breadcrumb) {
+ let i18nBreadcrumb = []
+ breadcrumb.forEach(item => {
+ i18nBreadcrumb.push(this.$t(item))
+ })
+ return i18nBreadcrumb
+ } else {
+ return this.getRouteBreadcrumb()
+ }
+ }
},
methods: {
- getBreadcrumb () {
- this.breadcrumb = this.$route.matched
- },
+ getRouteBreadcrumb() {
+ let routes = this.$route.matched
+ let breadcrumb = []
+ routes.forEach(route => {
+ let path = route.path
+ let key = path.length == 0 ? '/home' : path
+ breadcrumb.push(this.$t(key.substring(1).replace(new RegExp('/', 'g'), '.') + '.name'))
+ })
+ return breadcrumb
+ }
}
}
diff --git a/src/layouts/PageView.vue b/src/layouts/PageView.vue
index 6f3ae17..a189bf2 100644
--- a/src/layouts/PageView.vue
+++ b/src/layouts/PageView.vue
@@ -1,5 +1,5 @@
-
+
@@ -22,41 +22,26 @@ export default {
components: {PageToggleTransition, PageLayout},
data () {
return {
- path: '',
- desc: '',
- linkList: [],
- extraImage: ''
+ page: {}
}
},
computed: {
- title() {
- let key = this.path.substring(1).replace(new RegExp('/', 'g'), '.') + '.name'
- return this.$t(key)
+ ...mapState('setting', ['isMobile', 'multiPage', 'animate', 'routesI18n']),
+ desc() {
+ return this.page.desc
},
- ...mapState('setting', ['isMobile', 'multiPage', 'animate', 'routesI18n'])
- },
- created() {
- let i18n = this.routesI18n
- Object.keys(i18n).forEach(key => {
- this.$i18n.mergeLocaleMessage(key, i18n[key])
- })
+ linkList() {
+ return this.page.linkList
+ },
+ extraImage() {
+ return this.page.extraImage
+ }
},
mounted () {
- this.getPageHeaderInfo()
+ this.page = this.$refs.page
},
updated () {
- this.getPageHeaderInfo()
- },
- methods: {
- getPageHeaderInfo () {
- this.path = this.$route.path
- const page = this.$refs.page
- if (page) {
- this.desc = page.desc
- this.linkList = page.linkList
- this.extraImage = page.extraImage
- }
- }
+ this.page = this.$refs.page
}
}
diff --git a/src/router/index.js b/src/router/index.js
index 48638fe..83f4aab 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -12,8 +12,7 @@ export default new Router({
{
path: '/login',
name: '登录页',
- component: Login,
- invisible: true
+ component: Login
},
{
path: '/',