fix: 全局格式化

This commit is contained in:
Tim
2025-08-11 18:16:13 +08:00
parent 31cff70f63
commit 1c4df40f12
76 changed files with 1442 additions and 939 deletions

View File

@@ -13,7 +13,12 @@
<div class="about-loading" v-if="isFetching">
<l-hatch-spinner size="100" stroke="10" speed="1" color="var(--primary-color)" />
</div>
<div v-else class="about-content" v-html="renderMarkdown(content)" @click="handleContentClick"></div>
<div
v-else
class="about-content"
v-html="renderMarkdown(content)"
@click="handleContentClick"
></div>
</div>
</template>
@@ -26,10 +31,26 @@ export default {
setup() {
const isFetching = ref(false)
const tabs = [
{ name: 'about', label: '关于', file: 'https://openisle-1307107697.cos.ap-guangzhou.myqcloud.com/assert/about/about.md' },
{ name: 'agreement', label: '用户协议', file: 'https://openisle-1307107697.cos.ap-guangzhou.myqcloud.com/assert/about/agreement.md' },
{ name: 'guideline', label: '创作准则', file: 'https://openisle-1307107697.cos.ap-guangzhou.myqcloud.com/assert/about/guideline.md' },
{ name: 'privacy', label: '隐私政策', file: 'https://openisle-1307107697.cos.ap-guangzhou.myqcloud.com/assert/about/privacy.md' },
{
name: 'about',
label: '关于',
file: 'https://openisle-1307107697.cos.ap-guangzhou.myqcloud.com/assert/about/about.md',
},
{
name: 'agreement',
label: '用户协议',
file: 'https://openisle-1307107697.cos.ap-guangzhou.myqcloud.com/assert/about/agreement.md',
},
{
name: 'guideline',
label: '创作准则',
file: 'https://openisle-1307107697.cos.ap-guangzhou.myqcloud.com/assert/about/guideline.md',
},
{
name: 'privacy',
label: '隐私政策',
file: 'https://openisle-1307107697.cos.ap-guangzhou.myqcloud.com/assert/about/privacy.md',
},
]
const selectedTab = ref(tabs[0].name)
const content = ref('')
@@ -52,7 +73,7 @@ export default {
const selectTab = (name) => {
selectedTab.value = name
const tab = tabs.find(t => t.name === name)
const tab = tabs.find((t) => t.name === name)
if (tab) loadContent(tab.file)
}
@@ -60,12 +81,12 @@ export default {
loadContent(tabs[0].file)
})
const handleContentClick = e => {
const handleContentClick = (e) => {
handleMarkdownClick(e)
}
return { tabs, selectedTab, content, renderMarkdown, selectTab, isFetching, handleContentClick }
}
},
}
</script>
@@ -117,5 +138,4 @@ export default {
width: 100vw;
}
}
</style>

View File

@@ -1,7 +1,7 @@
<template>
<div class="site-stats-page">
<ClientOnly>
<VChart v-if="option" :option="option" :autoresize="true" style="height:400px" />
<VChart v-if="option" :option="option" :autoresize="true" style="height: 400px" />
</ClientOnly>
</div>
</template>
@@ -11,7 +11,12 @@ import { ref, onMounted } from 'vue'
import VChart from 'vue-echarts'
import { use } from 'echarts/core'
import { LineChart } from 'echarts/charts'
import { TitleComponent, TooltipComponent, GridComponent, DataZoomComponent } from 'echarts/components'
import {
TitleComponent,
TooltipComponent,
GridComponent,
DataZoomComponent,
} from 'echarts/components'
import { CanvasRenderer } from 'echarts/renderers'
import { API_BASE_URL } from '../main'
import { getToken } from '../utils/auth'
@@ -23,20 +28,20 @@ const option = ref(null)
async function loadData() {
const token = getToken()
const res = await fetch(`${API_BASE_URL}/api/stats/dau-range?days=30`, {
headers: { Authorization: `Bearer ${token}` }
headers: { Authorization: `Bearer ${token}` },
})
if (res.ok) {
const data = await res.json()
data.sort((a, b) => new Date(a.date) - new Date(b.date))
const dates = data.map(d => d.date)
const values = data.map(d => d.value)
const dates = data.map((d) => d.date)
const values = data.map((d) => d.value)
option.value = {
title: { text: '站点 DAU' },
tooltip: { trigger: 'axis' },
xAxis: { type: 'category', data: dates },
yAxis: { type: 'value' },
dataZoom: [{ type: 'slider', start: 80 }, { type: 'inside' }],
series: [{ type: 'line', areaStyle: {}, smooth: true, data: values }]
series: [{ type: 'line', areaStyle: {}, smooth: true, data: values }],
}
}
}