【update】菜单管理-增加双语
This commit is contained in:
@@ -2,6 +2,7 @@ import Menu from 'ant-design-vue/es/menu'
|
|||||||
import Icon from 'ant-design-vue/es/icon'
|
import Icon from 'ant-design-vue/es/icon'
|
||||||
|
|
||||||
const { Item, SubMenu } = Menu
|
const { Item, SubMenu } = Menu
|
||||||
|
// import i18n from '@/common/lang'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'SMenu',
|
name: 'SMenu',
|
||||||
@@ -40,6 +41,10 @@ export default {
|
|||||||
return keys
|
return keys
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
created () {
|
||||||
|
const langCn = localStorage.language
|
||||||
|
this.showKey = langCn === 'en-us' ? 'titleEn' : 'title'
|
||||||
|
},
|
||||||
mounted () {
|
mounted () {
|
||||||
this.updateMenu()
|
this.updateMenu()
|
||||||
},
|
},
|
||||||
@@ -150,12 +155,12 @@ export default {
|
|||||||
item.meta = Object.assign(item.meta, { hidden: true })
|
item.meta = Object.assign(item.meta, { hidden: true })
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
// <span>{menu.meta.title && menu.meta.title.includes('t(\'') ? i18n.t(menu.meta.title.replace('t(\'', '').replace('\')', '')) : menu.meta.title}</span>
|
||||||
return (
|
return (
|
||||||
<Item {...{ key: menu.path }}>
|
<Item {...{ key: menu.path }}>
|
||||||
<tag {...{ props, attrs }}>
|
<tag {...{ props, attrs }}>
|
||||||
{this.renderIcon(menu.meta.icon)}
|
{this.renderIcon(menu.meta.icon)}
|
||||||
<span>{menu.meta.title}</span>
|
<span>{menu.meta[this.showKey] || menu.meta.title}</span>
|
||||||
</tag>
|
</tag>
|
||||||
</Item>
|
</Item>
|
||||||
)
|
)
|
||||||
@@ -169,7 +174,7 @@ export default {
|
|||||||
<SubMenu {...{ key: menu.path }}>
|
<SubMenu {...{ key: menu.path }}>
|
||||||
<span slot="title">
|
<span slot="title">
|
||||||
{this.renderIcon(menu.meta.icon)}
|
{this.renderIcon(menu.meta.icon)}
|
||||||
<span>{menu.meta.title}</span>
|
<span>{menu.meta[this.showKey] || menu.meta.title}</span>
|
||||||
</span>
|
</span>
|
||||||
{itemArr}
|
{itemArr}
|
||||||
</SubMenu>
|
</SubMenu>
|
||||||
|
|||||||
@@ -199,6 +199,8 @@ export default {
|
|||||||
height: @height;
|
height: @height;
|
||||||
background-color: white;
|
background-color: white;
|
||||||
transition: background 300ms;
|
transition: background 300ms;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
/* dark 样式 */
|
/* dark 样式 */
|
||||||
|
|
||||||
@@ -225,5 +227,7 @@ export default {
|
|||||||
.breadcrumb {
|
.breadcrumb {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
flex: 1;
|
||||||
|
width: 0;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -2,9 +2,9 @@
|
|||||||
<a-breadcrumb class="breadcrumb">
|
<a-breadcrumb class="breadcrumb">
|
||||||
<a-breadcrumb-item v-for="(item, index) in breadList" :key="index">
|
<a-breadcrumb-item v-for="(item, index) in breadList" :key="index">
|
||||||
<router-link v-if="item.name + '' !== name + ''" :to="{ path: item.path }">
|
<router-link v-if="item.name + '' !== name + ''" :to="{ path: item.path }">
|
||||||
{{ item.meta.title }}
|
{{ item.meta[showKey] || item.meta.title }}
|
||||||
</router-link>
|
</router-link>
|
||||||
<span v-else>{{ item.meta.title }}</span>
|
<span v-else>{{ item.meta[showKey] || item.meta.title }}</span>
|
||||||
</a-breadcrumb-item>
|
</a-breadcrumb-item>
|
||||||
</a-breadcrumb>
|
</a-breadcrumb>
|
||||||
</template>
|
</template>
|
||||||
@@ -16,10 +16,12 @@ export default {
|
|||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
name: '',
|
name: '',
|
||||||
breadList: []
|
breadList: [],
|
||||||
|
showKey: ''
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created () {
|
created () {
|
||||||
|
this.showKey = localStorage.language === 'en-us' ? 'titleEn' : 'title'
|
||||||
this.getBreadcrumb()
|
this.getBreadcrumb()
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
|||||||
@@ -151,6 +151,7 @@ function generateChildRouters (data) {
|
|||||||
hidden: item.hidden,
|
hidden: item.hidden,
|
||||||
meta: {
|
meta: {
|
||||||
title: item.meta.title,
|
title: item.meta.title,
|
||||||
|
titleEn: item.meta.titleEn,
|
||||||
icon: item.meta.icon,
|
icon: item.meta.icon,
|
||||||
url: item.meta.url,
|
url: item.meta.url,
|
||||||
permissionList: item.meta.permissionList,
|
permissionList: item.meta.permissionList,
|
||||||
|
|||||||
@@ -92,8 +92,8 @@ const columns = [
|
|||||||
key: 'name'
|
key: 'name'
|
||||||
}, {
|
}, {
|
||||||
title: '菜单英文名称',
|
title: '菜单英文名称',
|
||||||
dataIndex: 'englishName',
|
dataIndex: 'menuEn',
|
||||||
key: 'englishName',
|
key: 'menuEn',
|
||||||
scopedSlots: { customRender: 'text' }
|
scopedSlots: { customRender: 'text' }
|
||||||
}, {
|
}, {
|
||||||
title: '菜单类型',
|
title: '菜单类型',
|
||||||
|
|||||||
@@ -31,9 +31,9 @@
|
|||||||
:labelCol="labelCol"
|
:labelCol="labelCol"
|
||||||
:wrapperCol="wrapperCol"
|
:wrapperCol="wrapperCol"
|
||||||
label="菜单英文名称"
|
label="菜单英文名称"
|
||||||
prop="englishName"
|
prop="menuEn"
|
||||||
:hasFeedback="true" >
|
:hasFeedback="true" >
|
||||||
<a-input placeholder="请输入菜单英文名称" v-model="model.englishName" :readOnly="disableSubmit"/>
|
<a-input placeholder="请输入菜单英文名称" v-model="model.menuEn" :readOnly="disableSubmit"/>
|
||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
|
|
||||||
<a-form-model-item
|
<a-form-model-item
|
||||||
@@ -217,7 +217,7 @@ export default {
|
|||||||
validatorRules: function () {
|
validatorRules: function () {
|
||||||
return {
|
return {
|
||||||
name: [{ required: true, message: '请输入菜单标题!' }],
|
name: [{ required: true, message: '请输入菜单标题!' }],
|
||||||
englishName: [{ required: false, message: '请输入菜单英文名称' }],
|
menuEn: [{ required: false, message: '请输入菜单英文名称' }],
|
||||||
component: [{ required: this.show, message: '请输入前端组件!' }],
|
component: [{ required: this.show, message: '请输入前端组件!' }],
|
||||||
url: [{ required: this.show, message: '请输入菜单路径!' }],
|
url: [{ required: this.show, message: '请输入菜单路径!' }],
|
||||||
permsType: [{ required: true, message: '请输入授权策略!' }],
|
permsType: [{ required: true, message: '请输入授权策略!' }],
|
||||||
|
|||||||
Reference in New Issue
Block a user