initial commit

This commit is contained in:
Mr.April
2026-01-16 22:04:48 +08:00
parent 28cc3ec005
commit c5244e2b75
95 changed files with 27633 additions and 0 deletions
+239
View File
@@ -0,0 +1,239 @@
import { defineStore } from 'pinia'
import storage from '@/utils/storage'
import type { Menus } from './interface'
interface System {
lang: string
site: Record<string, any>
}
// 支持的语言列表
const availableLanguages = [
{ name: 'zh-cn', value: '中文' },
{ name: 'en', value: 'English' }
]
const menus = [
{
"id": 1,
"name": "community",
"type": "menu",
"path": "https://madong.tech",
"title": "社区",
"url": "https://www.baidu.com",
"icon": "i-dashboard",
"meta": {
"id": 1,
"type": "menu",
"menu_type": "tab"
}
},
{
"id": 2,
"name": "community",
"type": "menu",
"path": "/",
"title": "模块市场",
"url": "",
"icon": "i-dashboard",
"meta": {
"id": 2,
"type": "menu",
"menu_type": "tab"
}
},
{
"id": 3,
"name": "docs",
"type": "menu",
"path": "/",
"title": "文档",
"url": "",
"icon": "i-dashboard",
"meta": {
"id": 3,
"type": "menu",
"menu_type": "tab"
}
},
{
"id": 4,
"name": "demo",
"type": "directory",
"title": "演示站",
"url": "",
"icon": "i-settings",
"meta": {
"id": 4,
"type": "directory",
"menu_type": "tab"
},
"children": [
{
"id": 201,
"name": "demo1",
"type": "page",
"path": "/demo/test1",
"title": "演示站1",
"url": "",
"icon": "i-users",
"meta": {
"id": 201,
"type": "page",
"menu_type": "tab"
},
"children": []
},
{
"id": 202,
"name": "demo2",
"type": "page",
"path": "/demo/test2",
"title": "演示站2",
"url": "",
"icon": "i-users",
"meta": {
"id": 202,
"type": "page",
"menu_type": "tab"
},
"children": []
}
]
},
{
"id": 5,
"name": "code",
"type": "directory",
"title": "代码仓库",
"url": "",
"icon": "i-link",
"meta": {
"id": 5,
"type": "directory",
"menu_type": "tab"
},
"children": [
{
"id": 501,
"name": "gitee",
"type": "page",
"path": "/code/gitee",
"title": "Gitee",
"url": "https://gitee.com",
"icon": "i-book",
"meta": {
"id": 501,
"type": "page",
"menu_type": "link"
},
"children": []
},
{
"id": 502,
"name": "github",
"type": "page",
"path": "/external/support",
"title": "GitHub",
"url": "https://github.com",
"icon": "i-help-circle",
"meta": {
"id": 502,
"type": "page",
"menu_type": "link"
},
"children": []
}
]
}
] as Menus[]
export const useSystemStore = defineStore('system', {
state: (): System => {
return {
lang: storage.get('lang') ?? 'zh-cn',
site: {
site_name: '通用多应用管理系统后台框架',
record_number: 'test',
version: 'v1.0.1',
upload: {
mode: 'local',
},
head_nav: menus,
initialize: false,
user_initialize: false,
}
}
},
getters: {
/**
* 获取支持的语言列表
*/
getLanguages: () => availableLanguages,
/**
* 获取当前语言信息
*/
getCurrentLanguage: (state) => {
return availableLanguages.find(lang => lang.code === state.lang) || availableLanguages[0]
}
},
actions: {
/**
* 切换语言
* @param name 语言名称
*/
setLanguage(name: string) {
// 验证语言代码是否支持
if (!availableLanguages.some(lang => lang.name === name)) {
console.warn(`不支持的语言代码: ${name}`)
return false
}
this.lang = name
// 保存到本地存储
storage.set({ key: 'lang', data: name })
// 触发 i18n 语言切换
this.updateI18nLocale(name)
// 触发语言切换事件,让组件重新渲染
this.triggerLanguageChange()
return true
},
/**
* 更新 i18n 语言设置
* @param locale 语言代码
*/
updateI18nLocale(locale: string) {
// 获取 i18n 实例并切换语言
const nuxtApp = useNuxtApp()
const i18n = (nuxtApp as any).$i18n
if (i18n && i18n.locale !== locale) {
i18n.locale = locale
}
},
/**
* 触发语言切换事件
*/
triggerLanguageChange() {
// 触发自定义事件,通知组件重新渲染
if (process.client) {
window.dispatchEvent(new CustomEvent('languageChanged', {
detail: { locale: this.lang }
}))
}
},
async getSiteInfoFn() {
// 原有逻辑保持不变
}
}
})