fix: 菜单选择的i18n处理

This commit is contained in:
dap 2024-10-11 13:44:08 +08:00
parent 2099e672ce
commit 9288341c85
2 changed files with 16 additions and 3 deletions

View File

@ -3,7 +3,7 @@ import { computed, ref } from 'vue';
import { useVbenDrawer } from '@vben/common-ui';
import { $t } from '@vben/locales';
import { cloneDeep } from '@vben/utils';
import { cloneDeep, eachTree } from '@vben/utils';
import { useVbenForm } from '#/adapter';
import { menuTreeSelect, roleMenuTreeSelect } from '#/api/system/menu';
@ -37,11 +37,20 @@ async function setupMenuTree(id?: number | string) {
if (id) {
const resp = await roleMenuTreeSelect(id);
formApi.setFieldValue('menuIds', resp.checkedKeys);
const menus = resp.menus;
// i18n
eachTree(menus, (node) => {
node.label = $t(node.label);
});
//
menuTree.value = resp.menus;
} else {
const resp = await menuTreeSelect();
formApi.setFieldValue('menuIds', []);
// i18n
eachTree(resp, (node) => {
node.label = $t(node.label);
});
//
menuTree.value = resp;
}

View File

@ -3,7 +3,7 @@ import { computed, ref } from 'vue';
import { useVbenDrawer } from '@vben/common-ui';
import { $t } from '@vben/locales';
import { cloneDeep, listToTree } from '@vben/utils';
import { cloneDeep, eachTree, listToTree } from '@vben/utils';
import { useVbenForm } from '#/adapter';
import { menuList, tenantPackageMenuTreeSelect } from '#/api/system/menu';
@ -45,6 +45,10 @@ const menuTree = ref<any[]>([]);
async function setupMenuTree() {
const resp = await menuList();
const treeData = listToTree(resp, { id: 'menuId' });
// i18n
eachTree(treeData, (node) => {
node.menuName = $t(node.menuName);
});
//
menuTree.value = treeData;
}
@ -122,7 +126,7 @@ function handleMenuCheckStrictlyChange(value: boolean) {
ref="menuSelectRef"
v-bind="slotProps"
:check-strictly="formApi.form.values.menuCheckStrictly"
:expand-all-on-init="true"
:expand-all-on-init="false"
:field-names="{ title: 'menuName', key: 'menuId' }"
:tree-data="menuTree"
@check-strictly-change="handleMenuCheckStrictlyChange"