前后端基本架构和完全excel表的解析及统计图表的生成以及excel表的到出

This commit is contained in:
2026-03-19 01:51:34 +08:00
parent c23b93bb70
commit 2f630695ff
194 changed files with 23354 additions and 174 deletions

173
frontend/tailwind.config.js Normal file
View File

@@ -0,0 +1,173 @@
import tailwindAnimate from 'tailwindcss-animate';
import containerQuery from '@tailwindcss/container-queries';
import intersect from 'tailwindcss-intersect';
export default {
darkMode: ['class'],
content: [
'./index.html',
'./pages/**/*.{ts,tsx}',
'./components/**/*.{ts,tsx}',
'./app/**/*.{ts,tsx}',
'./src/**/*.{ts,tsx}',
'./node_modules/streamdown/dist/**/*.js'
],
safelist: ['border', 'border-border'],
prefix: '',
theme: {
container: {
center: true,
padding: '2rem',
screens: {
'2xl': '1400px'
}
},
extend: {
colors: {
border: 'hsl(var(--border))',
borderColor: {
border: 'hsl(var(--border))'
},
input: 'hsl(var(--input))',
ring: 'hsl(var(--ring))',
background: 'hsl(var(--background))',
foreground: 'hsl(var(--foreground))',
primary: {
DEFAULT: 'hsl(var(--primary))',
foreground: 'hsl(var(--primary-foreground))'
},
secondary: {
DEFAULT: 'hsl(var(--secondary))',
foreground: 'hsl(var(--secondary-foreground))'
},
destructive: {
DEFAULT: 'hsl(var(--destructive))',
foreground: 'hsl(var(--destructive-foreground))'
},
muted: {
DEFAULT: 'hsl(var(--muted))',
foreground: 'hsl(var(--muted-foreground))'
},
accent: {
DEFAULT: 'hsl(var(--accent))',
foreground: 'hsl(var(--accent-foreground))'
},
popover: {
DEFAULT: 'hsl(var(--popover))',
foreground: 'hsl(var(--popover-foreground))'
},
card: {
DEFAULT: 'hsl(var(--card))',
foreground: 'hsl(var(--card-foreground))'
},
education: {
blue: 'hsl(var(--education-blue))',
green: 'hsl(var(--education-green))'
},
success: 'hsl(var(--success))',
warning: 'hsl(var(--warning))',
info: 'hsl(var(--info))',
sidebar: {
DEFAULT: 'hsl(var(--sidebar-background))',
background: 'hsl(var(--sidebar-background))',
foreground: 'hsl(var(--sidebar-foreground))',
primary: 'hsl(var(--sidebar-primary))',
'primary-foreground': 'hsl(var(--sidebar-primary-foreground))',
accent: 'hsl(var(--sidebar-accent))',
'accent-foreground': 'hsl(var(--sidebar-accent-foreground))',
border: 'hsl(var(--sidebar-border))',
ring: 'hsl(var(--sidebar-ring))'
},
chart: {
'1': 'hsl(var(--chart-1))',
'2': 'hsl(var(--chart-2))',
'3': 'hsl(var(--chart-3))',
'4': 'hsl(var(--chart-4))',
'5': 'hsl(var(--chart-5))'
}
},
borderRadius: {
lg: 'var(--radius)',
md: 'calc(var(--radius) - 2px)',
sm: 'calc(var(--radius) - 4px)'
},
backgroundImage: {
'gradient-primary': 'var(--gradient-primary)',
'gradient-card': 'var(--gradient-card)',
'gradient-background': 'var(--gradient-background)'
},
boxShadow: {
card: 'var(--shadow-card)',
hover: 'var(--shadow-hover)'
},
keyframes: {
'accordion-down': {
from: {
height: '0'
},
to: {
height: 'var(--radix-accordion-content-height)'
}
},
'accordion-up': {
from: {
height: 'var(--radix-accordion-content-height)'
},
to: {
height: '0'
}
},
'fade-in': {
from: {
opacity: '0',
transform: 'translateY(10px)'
},
to: {
opacity: '1',
transform: 'translateY(0)'
}
},
'slide-in': {
from: {
opacity: '0',
transform: 'translateX(-20px)'
},
to: {
opacity: '1',
transform: 'translateX(0)'
}
}
},
animation: {
'accordion-down': 'accordion-down 0.2s ease-out',
'accordion-up': 'accordion-up 0.2s ease-out',
'fade-in': 'fade-in 0.5s ease-out',
'slide-in': 'slide-in 0.5s ease-out'
}
}
},
plugins: [
tailwindAnimate,
containerQuery,
intersect,
function ({addUtilities}) {
addUtilities(
{
'.border-t-solid': {'border-top-style': 'solid'},
'.border-r-solid': {'border-right-style': 'solid'},
'.border-b-solid': {'border-bottom-style': 'solid'},
'.border-l-solid': {'border-left-style': 'solid'},
'.border-t-dashed': {'border-top-style': 'dashed'},
'.border-r-dashed': {'border-right-style': 'dashed'},
'.border-b-dashed': {'border-bottom-style': 'dashed'},
'.border-l-dashed': {'border-left-style': 'dashed'},
'.border-t-dotted': {'border-top-style': 'dotted'},
'.border-r-dotted': {'border-right-style': 'dotted'},
'.border-b-dotted': {'border-bottom-style': 'dotted'},
'.border-l-dotted': {'border-left-style': 'dotted'},
},
['responsive']
);
},
],
};