zhou zhou
2026-04-13 6877c9caa25162e570a3e2a99a5b2ce3ef88368b
rsf-design/src/views/system/menu/menuPage.helpers.js
@@ -1,3 +1,5 @@
import { $t } from '@/locales'
export function createMenuSearchState() {
  return {
    name: '',
@@ -22,11 +24,17 @@
  if (!title) {
    return ''
  }
  return String(title).split('.').pop() || String(title)
  return String(title).trim()
}
export function getMenuDisplayTitle(row = {}, titleFormatter = defaultMenuTitleFormatter) {
  return titleFormatter(normalizeMenuTitleKey(row))
  const normalizedTitle = normalizeMenuTitleKey(row)
  const formattedTitle = titleFormatter(normalizedTitle)
  if (formattedTitle) {
    return formattedTitle
  }
  return defaultMenuTitleFormatter(row.name || row.meta?.title || '')
}
export function getMenuDisplayIcon(row = {}) {
@@ -43,16 +51,16 @@
  return 'primary'
}
export function getMenuTypeText(row = {}) {
  if (row.meta?.isAuthButton || Number(row.type) === 1) return '按钮'
  if (hasNestedMenus(row)) return '目录'
  return '菜单'
export function getMenuTypeText(row = {}, t = $t) {
  if (row.meta?.isAuthButton || Number(row.type) === 1) return t('pages.system.menu.types.button')
  if (hasNestedMenus(row)) return t('pages.system.menu.types.directory')
  return t('pages.system.menu.types.menu')
}
export function getMenuStatusMeta(status) {
export function getMenuStatusMeta(status, t = $t) {
  return normalizeMenuNumber(status, 1) === 1
    ? { text: '启用', type: 'success' }
    : { text: '禁用', type: 'danger' }
    ? { text: t('common.status.enabled'), type: 'success' }
    : { text: t('common.status.disabled'), type: 'danger' }
}
export function normalizeMenuTreeOptions(nodes = [], titleFormatter = defaultMenuTitleFormatter) {
@@ -67,10 +75,14 @@
  }))
}
export function buildMenuTreeOptions(tree = [], titleFormatter = defaultMenuTitleFormatter) {
export function buildMenuTreeOptions(
  tree = [],
  titleFormatter = defaultMenuTitleFormatter,
  t = $t
) {
  return [
    {
      label: '顶级菜单',
      label: t('table.topLevelMenu'),
      value: 0,
      children: normalizeMenuTreeOptions(tree, titleFormatter)
    }
@@ -135,10 +147,18 @@
  })
}
export function filterMenuTree(items = [], filters = {}, titleFormatter = defaultMenuTitleFormatter) {
export function filterMenuTree(
  items = [],
  filters = {},
  titleFormatter = defaultMenuTitleFormatter
) {
  const results = []
  const searchName = String(filters.name || '').toLowerCase().trim()
  const searchRoute = String(filters.route || '').toLowerCase().trim()
  const searchName = String(filters.name || '')
    .toLowerCase()
    .trim()
  const searchRoute = String(filters.route || '')
    .toLowerCase()
    .trim()
  for (const item of items) {
    const menuTitle = getMenuDisplayTitle(item, titleFormatter).toLowerCase()