批量优化
This commit is contained in:
1 parent
e3db229f41
commit
aa92ca40a2
79 files changed
+7495
-1104
No files matched your search
@@ -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 }
|
||||
}
|
||||
Reference in new issue
Block a user