Files
mes-ui-d2/src/menu/index.js
sheng 3149ffb932 feat: 新增模块首页、国际化适配与菜单重载功能
1. 为菜单数据新增remark字段并设置默认值
2. 全量替换硬编码文本为国际化多语言支持
3. 新增生产配置模块首页组件与路由
4. 新增菜单重载action,支持语言切换后重载菜单
5. 补充简体中文、英文、日文、繁体中文语言包
2026-05-28 15:47:19 +08:00

54 lines
1.4 KiB
JavaScript

import util from '@/libs/util'
/**
* 将后端返回的扁平菜单数组转为 { header: [], aside: [] } 树结构
* @param {Array} arr 后端返回的扁平菜单数据
*/
function getMenuData (arr) {
const tree = { header: [], aside: [] }
arr.forEach(value => {
if (!value.is_navi) {
return
}
const menuItem = {
path: value.url || ('d2-menu-empty-' + value.menu_id),
title: value.name,
icon: value.icon,
type: value.type,
params: value.params,
remark: value.remark || ''
}
// parent_id 为 0 的节点放入顶栏
if (value.parent_id === 0) {
tree.header.push({ ...menuItem })
}
// 所有节点保留 menu_id / parent_id 用于构建侧栏树形结构
menuItem.menu_id = value.menu_id
menuItem.parent_id = value.parent_id
tree.aside.push(menuItem)
})
// 扁平 aside 数组转为嵌套树
tree.aside = util.formatDataToTree(tree.aside)
return tree
}
export default {
/**
* 由 sourceDataLoad 调用,将菜单源数据写入 store
* @param {Object} vm vuex store 实例 (this)
* @param {Array} source 后端返回的扁平菜单数组
*/
install (vm, source) {
vm.commit('d2admin/menu/headerAuth', source)
const { header, aside } = getMenuData(source)
vm.commit('d2admin/menu/headerSet', header)
vm.commit('d2admin/menu/asideSet', aside)
}
}