提交 408c7c72 authored 作者: 王鹏飞's avatar 王鹏飞

chore: update

上级 40e3ffa1
<script setup>
import { useHead } from '@unhead/vue'
import { useUserStore } from '@/stores/user'
import { useAppConfig } from '@/composables/useAppConfig'
const appConfig = useAppConfig()
const userStore = useUserStore()
const appConfig = computed(() => useAppConfig(userStore.user?.mobile))
useHead({
title: appConfig.title,
useHead(() => ({
title: appConfig.value.title,
link: [
{
rel: 'icon',
key: 'favicon',
href: appConfig.favicon || '/images/favicon.ico',
href: appConfig.value.favicon || '/images/favicon.ico',
},
],
})
}))
const className = computed(() => {
return `system-${appConfig.system || 'default'}`
return `system-${appConfig.value.system || 'default'}`
})
</script>
......
......@@ -9,7 +9,8 @@ import { useUserStore } from '@/stores/user'
import { useMenuStore } from '@/stores/menu'
import { useAppConfig } from '@/composables/useAppConfig'
import { urls } from '@/utils/env'
const appConfig = useAppConfig()
const userStore = useUserStore()
const appConfig = computed(() => useAppConfig(userStore.user?.mobile))
const route = useRoute()
const router = useRouter()
......@@ -17,13 +18,12 @@ const mobileMenuVisible = ref(false)
const toggleMobileMenu = () => { mobileMenuVisible.value = !mobileMenuVisible.value }
const closeMobileMenu = () => { mobileMenuVisible.value = false }
const userStore = useUserStore()
const userInfo = userStore.user
const menuStore = useMenuStore()
const menus = $computed(() => {
// 大赛系统隐藏学生端、教师端的菜单
if (appConfig.system === 'game' && userStore.role?.id !== 6) {
if (appConfig.value.system === 'game' && userStore.role?.id !== 6) {
return []
} else {
return menuStore.menus
......@@ -46,7 +46,7 @@ const defaultActive = computed(() => {
})
const logout = async () => {
await userStore.logout()
location.href = `${appConfig.loginURL || urls.login}?rd=${encodeURIComponent(location.origin)}`
location.href = `${appConfig.value.loginURL || urls.login}?rd=${encodeURIComponent(location.origin)}`
}
function isUrl(path: string) {
......
import { urls } from '@/utils/env'
export function useAppConfig() {
const appConfigList = [
{
system: 'dml',
title: '数字技能实践教学平台',
// logo: '/images/logo.svg',
hosts: ['saas-dml-web'],
dmlURL: urls.dmlPro,
},
{
system: 'default',
title: '商业数据分析实验室',
logo: '/images/logo.svg',
hosts: ['saas-lab'],
},
{
system: 'ai',
title: '人工智能应用实践教学平台',
logo: '/images/logo.svg',
hosts: ['saas-dml-web'],
dmlURL: urls.dmlPro,
},
{
system: 'x',
title: '1+X实训平台',
logo: '/images/logo.svg',
hosts: ['saas-x'],
studentMenus: [
{ name: '首页', path: '/' },
{ name: '我的实验', path: '/student/lab' },
{ name: '理论学习', path: urls.learn },
],
adminMenus: [
{ name: '首页', path: '/' },
{
name: '我的实验',
path: '/admin/lab',
tag: ['v1-backend-experiment', 'v1-teacher'],
children: [
{ name: '实验管理', path: '/admin/lab/experiment', tag: 'v1-backend-experiment' },
{ name: '案例原文管理', path: '/admin/lab/case', tag: 'teacher-experiment-cases' },
{ name: '实验指导书管理', path: '/admin/lab/book', tag: 'v1-teacher-book' },
{ name: '实验操作视频管理', path: '/admin/lab/video', tag: 'v1-teacher-video' },
{ name: '实验讨论交流', path: '/admin/lab/discuss', tag: 'v1-teacher-discussion' },
{ name: '实验成绩管理', path: '/admin/lab/score', tag: 'v1-teacher-record' },
],
},
],
// liveMonitor: true,
},
{
system: 'game',
title: '商业数据分析竞赛平台',
hosts: ['saas-game'],
},
{
system: 'swsjfxs',
title: '商务数据分析师',
logo: '/images/logo_swsjfxs.png',
favicon: '/images/favicon_swsjfxs.png',
hosts: ['swsjfxs'],
studentMenus: [
{ name: '首页', path: '/' },
{ name: '我的大赛', path: '/student/contest' },
{ name: '大赛成绩查询', path: '/student/contest/score' },
],
xTrainLabel: '商务数据分析理论训练',
labTrainLabel: '商务数据分析实操训练',
xExamLabel: '商务数据分析理论考试',
labExamLabel: '商务数据分析实操考试',
loginURL: urls.swsjfxsLogin,
},
{
system: 'swsjfxs',
title: '商务数据分析师',
logo: '/images/logo_swsjfxs.png',
favicon: '/images/favicon_swsjfxs.png',
hosts: ['saas-lab-bda'],
studentMenus: [
{ name: '首页', path: '/' },
{ name: '我的大赛', path: '/student/contest' },
{ name: '大赛成绩查询', path: '/student/contest/score' },
],
xTrainLabel: '理论训练',
labTrainLabel: '实操训练',
xExamLabel: '理论考试',
labExamLabel: '实操考试',
loginURL: urls.swsjfxsLogin,
hideAvailableEvents: true, // 隐藏可参与赛项
hidePracticalTestPaper: true, // 隐藏实操试卷
hideContestToolbar: true, // 隐藏大赛工具栏
},
{
system: 'amo',
title: '全媒体运营师',
logo: '/images/logo_swsjfxs.png',
favicon: '/images/favicon_swsjfxs.png',
hosts: ['saas-lab-amo'],
studentMenus: [
{ name: '首页', path: '/' },
{ name: '我的大赛', path: '/student/contest' },
{ name: '大赛成绩查询', path: '/student/contest/score' },
],
xTrainLabel: '理论训练',
labTrainLabel: '实操训练',
xExamLabel: '理论考试',
labExamLabel: '实操考试',
loginURL: urls.swsjfxsLogin,
hideAvailableEvents: true, // 隐藏可参与赛项
hidePracticalTestPaper: true, // 隐藏实操试卷
hideContestToolbar: true, // 隐藏大赛工具栏
},
{
system: 'default',
title: '商业数据分析与应用大赛',
logo: '/images/logo.svg',
// logo: '/images/logo_swsjfxs.png',
// favicon: '/images/favicon_swsjfxs.png',
hosts: ['saas-lab-bda2'],
studentMenus: [
{ name: '首页', path: '/' },
{ name: '我的大赛', path: '/student/contest' },
// { name: '大赛成绩查询', path: '/student/contest/score' }
],
xTrainLabel: '理论训练',
labTrainLabel: '实操训练',
xExamLabel: '理论考试',
labExamLabel: '实操考试',
// loginURL: urls.swsjfxsLogin,
hideAvailableEvents: true, // 隐藏可参与赛项
hidePracticalTestPaper: true, // 隐藏实操试卷
hideContestToolbar: true, // 隐藏大赛工具栏
},
{
system: 'nac',
title: '首届网络视听行业职业技能大赛',
logo: '/images/nac_logo.png',
logoWidth: '40px',
// logo: '/images/logo_swsjfxs.png',
// favicon: '/images/favicon_swsjfxs.png',
hosts: ['saas-lab-nac'],
studentMenus: [
{ name: '首页', path: '/' },
{ name: '我的大赛', path: '/student/contest' },
// { name: '大赛成绩查询', path: '/student/contest/score' }
],
xTrainLabel: '理论训练',
labTrainLabel: '实操训练',
xExamLabel: '理论考试',
labExamLabel: '实操考试',
// loginURL: urls.swsjfxsLogin,
hideAvailableEvents: true, // 隐藏可参与赛项
hidePracticalTestPaper: true, // 隐藏实操试卷
hideContestToolbar: true, // 隐藏大赛工具栏
},
{
system: 'dml',
title: '网络主播实践教学平台',
// logo: '/images/favicon_swsjfxs.png',
// favicon: '/images/favicon_swsjfxs.png',
logo: '/images/logo.svg',
hosts: ['ccsc'],
dmlURL: urls.dmlPro,
// loginURL: urls.swsjfxsLogin,
studentMenus: [],
homeUrl: '/student/lab/competition',
liveMonitor: true,
},
]
const appConfigList = [
{
system: 'dml',
title: '数字技能实践教学平台',
// logo: '/images/logo.svg',
hosts: ['saas-dml-web'],
dmlURL: urls.dmlPro,
},
{
system: 'default',
title: '商业数据分析实验室',
logo: '/images/logo.svg',
hosts: ['saas-lab'],
},
{
system: 'ai',
title: '人工智能应用实践教学平台',
logo: '/images/logo.svg',
hosts: ['saas-dml-web'],
dmlURL: urls.dmlPro,
},
{
system: 'x',
title: '1+X实训平台',
logo: '/images/logo.svg',
hosts: ['saas-x'],
studentMenus: [
{ name: '首页', path: '/' },
{ name: '我的实验', path: '/student/lab' },
{ name: '理论学习', path: urls.learn },
],
adminMenus: [
{ name: '首页', path: '/' },
{
name: '我的实验',
path: '/admin/lab',
tag: ['v1-backend-experiment', 'v1-teacher'],
children: [
{ name: '实验管理', path: '/admin/lab/experiment', tag: 'v1-backend-experiment' },
{ name: '案例原文管理', path: '/admin/lab/case', tag: 'teacher-experiment-cases' },
{ name: '实验指导书管理', path: '/admin/lab/book', tag: 'v1-teacher-book' },
{ name: '实验操作视频管理', path: '/admin/lab/video', tag: 'v1-teacher-video' },
{ name: '实验讨论交流', path: '/admin/lab/discuss', tag: 'v1-teacher-discussion' },
{ name: '实验成绩管理', path: '/admin/lab/score', tag: 'v1-teacher-record' },
],
},
],
// liveMonitor: true,
},
{
system: 'game',
title: '商业数据分析竞赛平台',
hosts: ['saas-game'],
},
{
system: 'swsjfxs',
title: '商务数据分析师',
logo: '/images/logo_swsjfxs.png',
favicon: '/images/favicon_swsjfxs.png',
hosts: ['swsjfxs'],
studentMenus: [
{ name: '首页', path: '/' },
{ name: '我的大赛', path: '/student/contest' },
{ name: '大赛成绩查询', path: '/student/contest/score' },
],
xTrainLabel: '商务数据分析理论训练',
labTrainLabel: '商务数据分析实操训练',
xExamLabel: '商务数据分析理论考试',
labExamLabel: '商务数据分析实操考试',
loginURL: urls.swsjfxsLogin,
},
{
system: 'swsjfxs',
title: '商务数据分析师',
logo: '/images/logo_swsjfxs.png',
favicon: '/images/favicon_swsjfxs.png',
hosts: ['saas-lab-bda'],
studentMenus: [
{ name: '首页', path: '/' },
{ name: '我的大赛', path: '/student/contest' },
{ name: '大赛成绩查询', path: '/student/contest/score' },
],
xTrainLabel: '理论训练',
labTrainLabel: '实操训练',
xExamLabel: '理论考试',
labExamLabel: '实操考试',
loginURL: urls.swsjfxsLogin,
hideAvailableEvents: true, // 隐藏可参与赛项
hidePracticalTestPaper: true, // 隐藏实操试卷
hideContestToolbar: true, // 隐藏大赛工具栏
},
{
system: 'amo',
title: '全媒体运营师',
logo: '/images/logo_swsjfxs.png',
favicon: '/images/favicon_swsjfxs.png',
hosts: ['saas-lab-amo'],
studentMenus: [
{ name: '首页', path: '/' },
{ name: '我的大赛', path: '/student/contest' },
{ name: '大赛成绩查询', path: '/student/contest/score' },
],
xTrainLabel: '理论训练',
labTrainLabel: '实操训练',
xExamLabel: '理论考试',
labExamLabel: '实操考试',
loginURL: urls.swsjfxsLogin,
hideAvailableEvents: true, // 隐藏可参与赛项
hidePracticalTestPaper: true, // 隐藏实操试卷
hideContestToolbar: true, // 隐藏大赛工具栏
},
{
system: 'default',
title: '商业数据分析与应用大赛',
logo: '/images/logo.svg',
// logo: '/images/logo_swsjfxs.png',
// favicon: '/images/favicon_swsjfxs.png',
hosts: ['saas-lab-bda2'],
studentMenus: [
{ name: '首页', path: '/' },
{ name: '我的大赛', path: '/student/contest' },
// { name: '大赛成绩查询', path: '/student/contest/score' }
],
xTrainLabel: '理论训练',
labTrainLabel: '实操训练',
xExamLabel: '理论考试',
labExamLabel: '实操考试',
// loginURL: urls.swsjfxsLogin,
hideAvailableEvents: true, // 隐藏可参与赛项
hidePracticalTestPaper: true, // 隐藏实操试卷
hideContestToolbar: true, // 隐藏大赛工具栏
},
{
system: 'nac',
title: '首届网络视听行业职业技能大赛',
logo: '/images/nac_logo.png',
logoWidth: '40px',
// logo: '/images/logo_swsjfxs.png',
// favicon: '/images/favicon_swsjfxs.png',
hosts: ['saas-lab-nac'],
studentMenus: [
{ name: '首页', path: '/' },
{ name: '我的大赛', path: '/student/contest' },
// { name: '大赛成绩查询', path: '/student/contest/score' }
],
xTrainLabel: '理论训练',
labTrainLabel: '实操训练',
xExamLabel: '理论考试',
labExamLabel: '实操考试',
// loginURL: urls.swsjfxsLogin,
hideAvailableEvents: true, // 隐藏可参与赛项
hidePracticalTestPaper: true, // 隐藏实操试卷
hideContestToolbar: true, // 隐藏大赛工具栏
},
{
system: 'dml',
title: '网络主播实践教学平台',
// logo: '/images/favicon_swsjfxs.png',
// favicon: '/images/favicon_swsjfxs.png',
logo: '/images/logo.svg',
hosts: ['ccsc'],
dmlURL: urls.dmlPro,
// loginURL: urls.swsjfxsLogin,
studentMenus: [],
homeUrl: '/student/lab/competition',
liveMonitor: true,
},
]
// 长春金专大赛支持
const digitalFinanceMarketingMobiles = new Set(['15526552767', '18345542466', '14743833355', '18946639603'])
// 长春金专大赛支持
const digitalFinanceMarketingMobiles = new Set(['15526552767', '18345542466', '14743833355', '18946639603'])
export function useAppConfig(mobile?: string) {
// 如果定义了 VITE_SYSTEM,直接用;否则通过域名 hosts 匹配
const found = import.meta.env.VITE_SYSTEM
? appConfigList.find((item) => item.system === import.meta.env.VITE_SYSTEM) || appConfigList[0]
......@@ -182,12 +183,8 @@ export function useAppConfig() {
const appConfig = found || appConfigList[0]
const config = { ...appConfig }
const user = localStorage.getItem('user')
if (user) {
const userInfo = JSON.parse(user)
if (userInfo?.mobile && digitalFinanceMarketingMobiles.has(userInfo.mobile)) {
config.title = '数字金融营销平台'
}
if (mobile && digitalFinanceMarketingMobiles.has(mobile)) {
config.title = '数字金融营销平台'
}
return config
......
......@@ -40,13 +40,11 @@ export const useUserStore = defineStore('user', {
this.project = project
this.roles = roles
this.permissions = permissions
localStorage.setItem('user', JSON.stringify(info))
await useMapStore().getMapList()
},
async logout() {
await logout()
this.user = null
localStorage.removeItem('user')
},
},
})
Markdown 格式
0% 或
您添加了 0 人 到此讨论。请谨慎行事。
请先完成此评论的编辑!
请 注册 或者 后发表评论