批量优化

This commit is contained in:
hero920103 committed 2026-10-03 23:46:55 +08:00
1 parent e3db229f41
commit aa92ca40a2
79 files changed
+7495 -1104

No files matched your search

+60
View File
@@ -0,0 +1,60 @@
/**
* 子系统数据获取(共享逻辑)
*
* 三个子系统页面(概览 / 功能 / 待办)都需要:
* 1. 该子系统的配置(config/subsystems.js)
* 2. 该子系统下的菜单(/app/home → menus 按 module 归组)
* 这里统一封装,避免三个页面各写一遍。
*/
import { ref, computed } from 'vue'
import { fetchHome } from '@/api/workspace.js'
import { getSubsystem } from '@/config/subsystems.js'
/**
* @param {string} slug 子系统目录名(crm / erp / oa / cms / tools)
* @param {import('vue').Ref<string>} currentTab 当前 tab,用于按需拉数据
*/
export function useSubsystem(slug) {
const sub = getSubsystem(slug)
const loading = ref(true)
const loadError = ref('')
const user = ref({})
const menus = ref([])
const moduleMeta = ref(null)
/** 该子系统下所有菜单(含目录) */
const allMenus = computed(() => menus.value.filter((m) => m.module === sub.module))
/** 可直接跳转的叶子菜单,未开通/锁定的排除 */
const leafMenus = computed(() =>
allMenus.value.filter((m) => m.leaf !== false && !m.locked)
)
/** 目录(有下级,不能直接跳) */
const dirMenus = computed(() => allMenus.value.filter((m) => m.leaf === false))
/** 是否已被租户套餐开通 */
const enabled = ref(true)
async function load(force = false) {
loading.value = true
try {
const data = await fetchHome(force)
user.value = data.user || {}
menus.value = Array.isArray(data.menus) ? data.menus : []
const hit = (Array.isArray(data.modules) ? data.modules : []).find(
(m) => String(m.code || '').toLowerCase() === String(sub.module).toLowerCase()
)
moduleMeta.value = hit || null
enabled.value = hit ? hit.enabled !== false : true
loadError.value = ''
} catch (e) {
console.error('[subsystem] load failed:', e)
loadError.value = (e && e.message) || '接口请求失败'
} finally {
loading.value = false
}
}
return { sub, loading, loadError, user, menus, moduleMeta, enabled, allMenus, leafMenus, dirMenus, load }
}