【update】菜单管理-增加双语

This commit is contained in:
fengchenchen
2024-07-15 15:55:31 +08:00
parent d31c4cbcb1
commit 974d150e1b
6 changed files with 23 additions and 11 deletions
+8 -3
View File
@@ -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>
+4
View File
@@ -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>
+5 -3
View File
@@ -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: {
+1
View File
@@ -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,
+2 -2
View File
@@ -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: '菜单类型',
+3 -3
View File
@@ -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: '请输入授权策略!' }],