102 lines
3.9 KiB
TypeScript
102 lines
3.9 KiB
TypeScript
import { ref, onMounted, onUnmounted } from 'vue'
|
|
|
|
export interface BookConfig {
|
|
id: string
|
|
title: string
|
|
price: string
|
|
oldPrice: string
|
|
imageSrc: string
|
|
tag?: string
|
|
}
|
|
|
|
export interface SiteDisplayConfig {
|
|
heroVideoUrl: string
|
|
heroVideoCover: string
|
|
heroVideoTitle: string
|
|
heroVideoSubtitle: string
|
|
questionBankMockup: string
|
|
onlineSchoolMockup: string
|
|
questionBankHeroMockup: string
|
|
questionBankFocusMockup: string
|
|
onlineSchoolAppMockup: string
|
|
customerServiceQrcode: string
|
|
statsYears: number
|
|
statsStudents: string
|
|
statsCoverage: string
|
|
statsSchools: number
|
|
books: BookConfig[]
|
|
}
|
|
|
|
const defaultConfig: SiteDisplayConfig = {
|
|
heroVideoUrl: 'https://fenxiang-1304851894.cos.ap-nanjing.myqcloud.com/%E6%81%AD%E5%AD%A6%E6%95%99%E8%82%B2%E5%93%81%E7%89%8C%E5%AE%A3%E4%BC%A0.mp4',
|
|
heroVideoCover: 'https://fenxiang-1304851894.cos.ap-nanjing.myqcloud.com/%E5%B0%81%E9%9D%A2.png',
|
|
heroVideoTitle: '了解恭学教育',
|
|
heroVideoSubtitle: '观看 2025 年度品牌宣传片',
|
|
|
|
questionBankMockup: 'https://fenxiang-1304851894.cos.ap-nanjing.myqcloud.com/tikudemo-tuya.webp',
|
|
onlineSchoolMockup: 'https://fenxiang-1304851894.cos.ap-nanjing.myqcloud.com/wangkedemo-tuya.webp',
|
|
|
|
questionBankHeroMockup: 'https://fenxiang-1304851894.cos.ap-nanjing.myqcloud.com/tikudemo-tuya.webp',
|
|
questionBankFocusMockup: 'https://fenxiang-1304851894.cos.ap-nanjing.myqcloud.com/tikudemo-tuya.webp',
|
|
|
|
onlineSchoolAppMockup: 'https://fenxiang-1304851894.cos.ap-nanjing.myqcloud.com/wangkedemo-tuya.webp',
|
|
|
|
customerServiceQrcode: 'https://duiwaifengxiang-1304851894.cos.ap-beijing.myqcloud.com/gwgongxue/code.jpg',
|
|
|
|
statsYears: 7,
|
|
statsStudents: '21W+',
|
|
statsCoverage: '100%',
|
|
statsSchools: 12,
|
|
|
|
books: [
|
|
{ id: '1', title: '天津专升本数学自学参考书', price: '128.00', oldPrice: '168.00', imageSrc: 'https://fenxiang-1304851894.cos.ap-nanjing.myqcloud.com/%E6%95%B0%E5%AD%A61-tuya.webp', tag: '畅销榜第一' },
|
|
{ id: '2', title: '天津专升本语文自学参考书', price: '128.00', oldPrice: '168.00', imageSrc: 'https://fenxiang-1304851894.cos.ap-nanjing.myqcloud.com/%E8%AF%AD%E6%96%871-tuya.webp', tag: '新书首发' },
|
|
{ id: '3', title: '天津专升本英语自学参考书', price: '128.00', oldPrice: '168.00', imageSrc: 'https://fenxiang-1304851894.cos.ap-nanjing.myqcloud.com/%E8%8B%B1%E8%AF%AD1-tuya.webp', tag: '热销' },
|
|
{ id: '4', title: '天津专升本计算机自学参考书', price: '128.00', oldPrice: '168.00', imageSrc: 'https://fenxiang-1304851894.cos.ap-nanjing.myqcloud.com/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%80%92%E5%BD%B1-tuya.webp', tag: '必刷' },
|
|
{ id: '5', title: '三年模拟一年升本刷题系列套装', price: '128.00', oldPrice: '198.00', imageSrc: 'https://fenxiang-1304851894.cos.ap-nanjing.myqcloud.com/%E4%B8%89%E4%B8%80-tuya.webp', tag: '限时优惠' },
|
|
],
|
|
}
|
|
|
|
function getFromCache(): Partial<SiteDisplayConfig> {
|
|
if (typeof localStorage === 'undefined') return {}
|
|
try {
|
|
const cached = localStorage.getItem('site_display_config')
|
|
if (cached) return JSON.parse(cached)
|
|
} catch {}
|
|
return {}
|
|
}
|
|
|
|
function setCache(config: SiteDisplayConfig) {
|
|
if (typeof localStorage === 'undefined') return
|
|
try {
|
|
localStorage.setItem('site_display_config', JSON.stringify(config))
|
|
} catch {}
|
|
}
|
|
|
|
export function getSiteConfig(): SiteDisplayConfig {
|
|
const cached = getFromCache()
|
|
return { ...defaultConfig, ...cached }
|
|
}
|
|
|
|
export function useSiteConfig() {
|
|
const config = ref<SiteDisplayConfig>(getSiteConfig())
|
|
|
|
onMounted(() => {
|
|
const cached = getFromCache()
|
|
config.value = { ...defaultConfig, ...cached }
|
|
|
|
const handleStorage = (e: StorageEvent) => {
|
|
if (e.key === 'site_display_config') {
|
|
config.value = getSiteConfig()
|
|
}
|
|
}
|
|
|
|
window.addEventListener('storage', handleStorage)
|
|
onUnmounted(() => {
|
|
window.removeEventListener('storage', handleStorage)
|
|
})
|
|
})
|
|
|
|
return config
|
|
}
|