Files
webman-buildadmin-mall/web/src/api/frontend/index.ts
2026-03-18 17:19:03 +08:00

57 lines
2.0 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import createAxios from '/@/utils/axios'
import { useSiteConfig } from '/@/stores/siteConfig'
import { useMemberCenter } from '/@/stores/memberCenter'
import { debounce, setTitleFromRoute } from '/@/utils/common'
import { handleFrontendRoute } from '/@/utils/router'
import { useUserInfo } from '/@/stores/userInfo'
import router from '/@/router/index'
import { isEmpty } from 'lodash-es'
export const indexUrl = '/api/index/'
/**
* 前台初始化请求,获取站点配置信息,动态路由信息等
* 1. 首次初始化携带了会员token时一共只初始化一次
* 2. 首次初始化未带会员token将在登录后再初始化一次
*/
export function initialize(callback?: (res: ApiResponse) => void, requiredLogin?: boolean) {
debounce(() => {
if (router.currentRoute.value.meta.initialize === false) return
const userInfo = useUserInfo()
const siteConfig = useSiteConfig()
if (!userInfo.isLogin() && siteConfig.initialize) return
if (userInfo.isLogin() && siteConfig.userInitialize) return
const memberCenter = useMemberCenter()
createAxios({
url: indexUrl + 'index',
method: 'get',
params: {
requiredLogin: requiredLogin ? 1 : 0,
},
}).then((res) => {
handleFrontendRoute(res.data.rules, res.data.menus)
siteConfig.dataFill(res.data.site)
memberCenter.setStatus(res.data.openMemberCenter)
if (!isEmpty(res.data.userInfo)) {
userInfo.dataFill(res.data.userInfo)
// 请求到会员信息才设置会员中心初始化是成功的
siteConfig.setUserInitialize(true)
}
if (!res.data.openMemberCenter) memberCenter.setLayoutMode('Disable')
siteConfig.setInitialize(true)
// 根据当前路由重设页面标题
setTitleFromRoute()
typeof callback == 'function' && callback(res)
})
}, 200)()
}