初始化

This commit is contained in:
2026-05-10 01:33:46 +08:00
parent 9e24153eac
commit 105ed4cbee
414 changed files with 87 additions and 53342 deletions

View File

@@ -21,7 +21,7 @@ export async function getTenantInfo(): Promise<Company> {
}
/**
* 获取网站信息 https://websopy-api.websoft.top/api
* 获取网站信息 https://cms-api.websoft.top/api
*/
export async function getSiteInfo() {
const res = await request.get<ApiResult<AppProduct>>(

View File

@@ -134,7 +134,7 @@ export async function checkExistence(
*/
export async function configWebsiteField(params?: WebsiteFieldParam) {
const res = await request.get<ApiResult<Config>>(
'https://websopy-api.websoft.top/api/cms/cmsWebsite-field/config',
'https://cms-api.websoft.top/api/cms/cmsWebsite-field/config',
{
params,
headers: {

View File

@@ -115,6 +115,7 @@
<script setup lang="ts">
import { mainNav } from '@/config/nav'
import { useMenu } from '@/composables/useMenu'
import { getUserInfo } from '@/api/layout'
import type { User } from '@/api/system/user/model'
import { getToken, removeToken } from '@/utils/token-util'
@@ -122,7 +123,8 @@ import { clearAuthz, setAuthzFromUser } from '@/utils/permission'
import { UserOutlined, ProfileOutlined, MessageOutlined } from '@ant-design/icons-vue'
const nav = computed(() => mainNav)
const menu = useMenu()
const nav = computed(() => menu.value.length ? menu.value : mainNav)
const route = useRoute()
const open = ref(false)

View File

@@ -0,0 +1,27 @@
import type { NavItem } from '@/config/nav'
import type { CmsNavigation } from '@/api/cms/cmsNavigation/model'
/**
* 获取菜单状态 (响应式)
* 与模板项目的 useMenu() 对齐,使用 useState 跨组件共享
*/
export const useMenu = () => {
return useState<NavItem[]>('menu', () => [])
}
/**
* 将 CmsNavigation 树映射为 NavItem 树
*/
export function mapNavItem(tree: CmsNavigation[]): NavItem[] {
return (tree || [])
.filter(item => !item.hide) // 过滤隐藏项
.sort((a, b) => (a.sortNumber ?? 0) - (b.sortNumber ?? 0))
.map(item => ({
key: item.code || String(item.navigationId),
label: item.title || '',
to: item.path || '/',
href: item.target === '_blank' ? item.path : undefined,
badge: undefined, // 后端暂无 badge 字段,按需扩展
children: item.children?.length ? mapNavItem(item.children) : undefined,
}))
}

View File

@@ -6,7 +6,7 @@ export const ENV_CONFIG = {
},
prod: {
name: '生产环境',
serverUrl: 'https://websopy-api.websoft.top',
serverUrl: 'https://cms-api.websoft.top',
},
} as const
@@ -43,9 +43,9 @@ const BASE_URL = getApiBaseUrl()
export const SERVER_API_URL = '/api/_server'
export const MODULES_API_URL = '/api/_modules'
// App 模块:相对路径,走 /api/_app proxy → websopy-api.websoft.top/api/app/*
// App 模块:相对路径,走 /api/_app proxy → cms-api.websoft.top/api/app/*
export const APP_API_URL = '/api/app'
export const FILE_SERVER = '/api/_file'
// Some endpoints use this as a special TenantId override (defaults to current tenant)
export const TEMPLATE_ID = '5'
export const TEMPLATE_ID = '10588'

24
app/plugins/fetch-menu.ts Normal file
View File

@@ -0,0 +1,24 @@
import { getSiteInfo } from '@/api/cms/cmsWebsite'
import { useMenu, mapNavItem } from '@/composables/useMenu'
import type { CmsNavigation } from '@/api/cms/cmsNavigation/model'
/**
* 应用启动时获取站点信息(含导航菜单),写入 useMenu() 状态
*/
export default defineNuxtPlugin(async () => {
const menu = useMenu()
// 如果已有数据,跳过
if (menu.value.length) return
try {
const data = await getSiteInfo()
// getSiteInfo 返回 CmsWebsite其中 topNavs 是 CmsNavigation[]
const topNavs = (data as any)?.topNavs as CmsNavigation[] | undefined
if (topNavs?.length) {
menu.value = mapNavItem(topNavs)
}
} catch (e) {
console.warn('[fetch-menu] 获取导航菜单失败', e)
}
})