feat(statistics): 添加统计分析模块:天医币、实物、培训班。

- 新增天医币、实物和培训班报表页面
- 添加统计相关API接口
- 配置统计分析路由
- 优化SheetFooter和DialogFooter组件样式
This commit is contained in:
2026-01-14 09:24:24 +08:00
parent 77c1b37f2e
commit dff302aae8
11 changed files with 511 additions and 60 deletions

View File

@@ -27,19 +27,12 @@ const subMenu = useSubMenuContext();
const { parentMenu, parentPaths } = useMenu();
const active = computed(() => props.path === rootMenu?.activePath);
const menuIcon = computed(() =>
active.value ? props.activeIcon || props.icon : props.icon,
);
const menuIcon = computed(() => (active.value ? props.activeIcon || props.icon : props.icon));
const isTopLevelMenuItem = computed(
() => parentMenu.value?.type.name === 'Menu',
);
const isTopLevelMenuItem = computed(() => parentMenu.value?.type.name === 'Menu');
const collapseShowTitle = computed(
() =>
rootMenu.props?.collapseShowTitle &&
isTopLevelMenuItem.value &&
rootMenu.props.collapse,
() => rootMenu.props?.collapseShowTitle && isTopLevelMenuItem.value && rootMenu.props.collapse,
);
const showTooltip = computed(
@@ -92,11 +85,7 @@ onBeforeUnmount(() => {
role="menuitem"
@click.stop="handleClick"
>
<VbenTooltip
v-if="showTooltip"
:content-class="[rootMenu.theme]"
side="right"
>
<VbenTooltip v-if="showTooltip" :content-class="[rootMenu.theme]" side="right">
<template #trigger>
<div :class="[nsMenu.be('tooltip', 'trigger')]">
<VbenIcon :class="nsMenu.e('icon')" :icon="menuIcon" fallback />
@@ -109,11 +98,7 @@ onBeforeUnmount(() => {
<slot name="title"></slot>
</VbenTooltip>
<div v-show="!showTooltip" :class="[e('content')]">
<MenuBadge
v-if="rootMenu.props.mode !== 'horizontal'"
class="right-2"
v-bind="props"
/>
<MenuBadge v-if="rootMenu.props.mode !== 'horizontal'" class="right-2" v-bind="props" />
<VbenIcon :class="nsMenu.e('icon')" :icon="menuIcon" />
<slot></slot>
<slot name="title"></slot>

View File

@@ -5,11 +5,7 @@ const props = defineProps<{ class?: any }>();
</script>
<template>
<div
:class="
cn('flex flex-row flex-col-reverse justify-end gap-x-2', props.class)
"
>
<div :class="cn('flex flex-col-reverse justify-end gap-x-2', props.class)">
<slot></slot>
</div>
</template>

View File

@@ -5,11 +5,7 @@ const props = defineProps<{ class?: any }>();
</script>
<template>
<div
:class="
cn('flex flex-row flex-col-reverse justify-end gap-x-2', props.class)
"
>
<div :class="cn('flex flex-col-reverse justify-end gap-x-2', props.class)">
<slot></slot>
</div>
</template>