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

chore: update

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