智教助手平台:完整初始化
- 前端:Vue3 + TS + Element Plus,24 个页面路由(课件/组题/教案/动画/思维导图/作文批改/命题/课堂/资源/社区等) - 后端:FastAPI + SQLAlchemy + SQLite,17 个路由模块,AI 服务层含降级模板 - AI:glm-5.x 推理模型已禁用思维链,确保输出真实内容 - 修复:ai_service 两处请求体注入 enable_thinking/thinking disabled - 测试账号:13900999999 / test1234
This commit is contained in:
@@ -0,0 +1,403 @@
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
html, body, #app {
|
||||
height: 100%;
|
||||
font-family: 'PingFang SC', -apple-system, BlinkMacSystemFont, 'Microsoft YaHei', 'Helvetica Neue', Helvetica, Arial, sans-serif;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
:root {
|
||||
--primary: #00543D;
|
||||
--primary-light: #98D997;
|
||||
--primary-dark: #004532;
|
||||
--primary-bg: #E8F5EA;
|
||||
--accent: #2563EB;
|
||||
--warning: #F59E0B;
|
||||
--ink: #14213D;
|
||||
--gradient: linear-gradient(135deg, #0F766E 0%, #14B8A6 52%, #2DD4BF 100%);
|
||||
--gradient-blue: linear-gradient(135deg, #2563EB 0%, #06B6D4 100%);
|
||||
--gradient-green: linear-gradient(135deg, #0F766E 0%, #22C55E 100%);
|
||||
--gradient-orange: linear-gradient(135deg, #F59E0B 0%, #F97316 100%);
|
||||
--gradient-red: linear-gradient(135deg, #DC2626 0%, #FB7185 100%);
|
||||
--gradient-pink: linear-gradient(135deg, #DB2777 0%, #F472B6 100%);
|
||||
--gradient-cyan: linear-gradient(135deg, #0891B2 0%, #22D3EE 100%);
|
||||
|
||||
--text-primary: #111827;
|
||||
--text-secondary: #4B5563;
|
||||
--text-muted: #8A94A6;
|
||||
--border-color: #DCE8DE;
|
||||
--bg-color: #F7FAF6;
|
||||
--bg-white: #FFFFFF;
|
||||
|
||||
--sidebar-width: 252px;
|
||||
--sidebar-collapsed: 82px;
|
||||
--header-height: 58px;
|
||||
|
||||
--radius-sm: 8px;
|
||||
--radius-md: 12px;
|
||||
--radius-lg: 12px;
|
||||
--radius-xl: 16px;
|
||||
|
||||
--shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);
|
||||
--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.07), 0 2px 4px -2px rgba(0, 0, 0, 0.05);
|
||||
--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.08), 0 4px 6px -4px rgba(0, 0, 0, 0.04);
|
||||
--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.06);
|
||||
}
|
||||
|
||||
.page-container {
|
||||
width: 100%;
|
||||
max-width: 1480px;
|
||||
margin: 0 auto;
|
||||
padding: 22px 32px 28px;
|
||||
background: var(--bg-color);
|
||||
min-height: calc(100vh - var(--header-height));
|
||||
}
|
||||
|
||||
.page-header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
gap: 16px;
|
||||
margin-bottom: 28px;
|
||||
}
|
||||
|
||||
.page-header h2 {
|
||||
font-size: 25px;
|
||||
font-weight: 900;
|
||||
color: var(--primary);
|
||||
}
|
||||
|
||||
.card-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
.gen-input-section,
|
||||
.guide-card,
|
||||
.question-card,
|
||||
.phase-content,
|
||||
.resource-card,
|
||||
.post-card {
|
||||
border-radius: 14px !important;
|
||||
border-color: #dce8de !important;
|
||||
box-shadow: none !important;
|
||||
}
|
||||
|
||||
.guide-cards {
|
||||
display: grid !important;
|
||||
grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)) !important;
|
||||
gap: 12px !important;
|
||||
}
|
||||
|
||||
.settings-row,
|
||||
.settings-grid,
|
||||
.filter-bar {
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.settings-grid {
|
||||
grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)) !important;
|
||||
}
|
||||
|
||||
.gen-hero {
|
||||
max-width: 1120px;
|
||||
margin: 0 auto 18px !important;
|
||||
align-items: center !important;
|
||||
}
|
||||
|
||||
.gen-hero-icon {
|
||||
width: 42px !important;
|
||||
height: 42px !important;
|
||||
border-radius: 50% !important;
|
||||
background: #fff !important;
|
||||
border: 1px solid #d6e4d8 !important;
|
||||
color: var(--primary) !important;
|
||||
}
|
||||
|
||||
.gen-hero-icon .el-icon,
|
||||
.gen-hero-icon svg {
|
||||
color: var(--primary) !important;
|
||||
}
|
||||
|
||||
.gen-hero h2 {
|
||||
font-size: 25px !important;
|
||||
color: var(--primary) !important;
|
||||
font-weight: 900 !important;
|
||||
}
|
||||
|
||||
.gen-hero p {
|
||||
color: #75867f !important;
|
||||
font-size: 14px !important;
|
||||
}
|
||||
|
||||
.gen-input-section {
|
||||
max-width: 1120px;
|
||||
margin: 0 auto 22px !important;
|
||||
background: rgba(255,255,255,0.86) !important;
|
||||
border: 1px solid #cfe0d3 !important;
|
||||
border-radius: 18px !important;
|
||||
box-shadow: 0 18px 42px rgba(17, 69, 52, 0.07) !important;
|
||||
}
|
||||
|
||||
.prompt-box :deep(.el-textarea__inner),
|
||||
.input-area :deep(.el-textarea__inner),
|
||||
.essay-input :deep(.el-textarea__inner),
|
||||
.setting-full :deep(.el-textarea__inner) {
|
||||
background: #fff !important;
|
||||
border: 1px solid #dce8de !important;
|
||||
border-radius: 14px !important;
|
||||
color: #173f35 !important;
|
||||
}
|
||||
|
||||
.prompt-tag,
|
||||
.sug-tag,
|
||||
.type-check,
|
||||
.hot-tag {
|
||||
border-radius: 18px !important;
|
||||
background: #fff !important;
|
||||
border: 1px solid #dce8de !important;
|
||||
color: #51665f !important;
|
||||
}
|
||||
|
||||
.prompt-tag:hover,
|
||||
.sug-tag:hover,
|
||||
.type-check.checked,
|
||||
.hot-tag:hover {
|
||||
background: #e8f5ea !important;
|
||||
border-color: #a8cfab !important;
|
||||
color: var(--primary) !important;
|
||||
}
|
||||
|
||||
.gen-btn,
|
||||
.generate-btn,
|
||||
.create-btn,
|
||||
.upload-btn,
|
||||
.grade-btn,
|
||||
.save-btn,
|
||||
.action-btn.primary {
|
||||
background: #00543d !important;
|
||||
border-radius: 13px !important;
|
||||
box-shadow: none !important;
|
||||
}
|
||||
|
||||
.guide-section,
|
||||
.result-section,
|
||||
.essay-input-panel,
|
||||
.essay-result-panel,
|
||||
.info-tags,
|
||||
.homework-section,
|
||||
.filter-bar,
|
||||
.community-layout,
|
||||
.content-area {
|
||||
max-width: 1120px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.guide-card,
|
||||
.guide-item,
|
||||
.question-card,
|
||||
.phase-content,
|
||||
.resource-card,
|
||||
.post-card,
|
||||
.cw-card,
|
||||
.input-card,
|
||||
.result-panel,
|
||||
.essay-input-panel,
|
||||
.essay-result-panel,
|
||||
.hot-tags-card {
|
||||
border: 1px solid #dce8de !important;
|
||||
border-radius: 14px !important;
|
||||
box-shadow: none !important;
|
||||
}
|
||||
|
||||
.cw-cover,
|
||||
.template-cover,
|
||||
.card-thumb {
|
||||
border-radius: 10px;
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
.el-input__wrapper,
|
||||
.el-textarea__inner,
|
||||
.el-select__wrapper {
|
||||
box-shadow: none !important;
|
||||
border: 1px solid #dce8de !important;
|
||||
background: #fff !important;
|
||||
}
|
||||
|
||||
@media (max-width: 760px) {
|
||||
.page-container {
|
||||
padding: 14px;
|
||||
}
|
||||
|
||||
.page-header {
|
||||
align-items: flex-start;
|
||||
flex-direction: column;
|
||||
margin-bottom: 18px;
|
||||
}
|
||||
|
||||
.prompt-footer,
|
||||
.result-header,
|
||||
.header-actions {
|
||||
align-items: stretch !important;
|
||||
flex-direction: column !important;
|
||||
}
|
||||
}
|
||||
|
||||
/* Element Plus overrides */
|
||||
.el-card {
|
||||
border-radius: var(--radius-lg) !important;
|
||||
border: 1px solid var(--border-color) !important;
|
||||
box-shadow: var(--shadow-sm) !important;
|
||||
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1) !important;
|
||||
}
|
||||
|
||||
.el-card:hover {
|
||||
box-shadow: var(--shadow-lg) !important;
|
||||
transform: translateY(-2px);
|
||||
}
|
||||
|
||||
.el-button--primary {
|
||||
background: var(--gradient) !important;
|
||||
border: none !important;
|
||||
border-radius: var(--radius-sm) !important;
|
||||
font-weight: 500 !important;
|
||||
}
|
||||
|
||||
.el-button--primary:hover {
|
||||
opacity: 0.9;
|
||||
transform: translateY(-1px);
|
||||
box-shadow: 0 4px 12px rgba(79, 70, 229, 0.4) !important;
|
||||
}
|
||||
|
||||
.el-input__wrapper,
|
||||
.el-textarea__inner,
|
||||
.el-select__wrapper {
|
||||
border-radius: var(--radius-sm) !important;
|
||||
}
|
||||
|
||||
.el-form-item__label {
|
||||
font-weight: 500 !important;
|
||||
color: var(--text-secondary) !important;
|
||||
}
|
||||
|
||||
/* Dialog */
|
||||
.el-dialog {
|
||||
border-radius: var(--radius-lg) !important;
|
||||
overflow: hidden;
|
||||
}
|
||||
.el-dialog__header {
|
||||
border-bottom: 1px solid var(--border-color);
|
||||
padding: 20px 24px !important;
|
||||
margin-right: 0 !important;
|
||||
}
|
||||
.el-dialog__title {
|
||||
font-weight: 600 !important;
|
||||
font-size: 17px !important;
|
||||
color: var(--text-primary) !important;
|
||||
}
|
||||
.el-dialog__body {
|
||||
padding: 24px !important;
|
||||
}
|
||||
.el-dialog__footer {
|
||||
border-top: 1px solid var(--border-color);
|
||||
padding: 16px 24px !important;
|
||||
}
|
||||
|
||||
/* Tag */
|
||||
.el-tag {
|
||||
border-radius: 6px !important;
|
||||
}
|
||||
|
||||
/* Dropdown */
|
||||
.el-dropdown-menu__item {
|
||||
border-radius: 6px !important;
|
||||
margin: 2px 6px !important;
|
||||
padding: 8px 16px !important;
|
||||
}
|
||||
|
||||
/* Message */
|
||||
.el-message {
|
||||
border-radius: var(--radius-sm) !important;
|
||||
box-shadow: var(--shadow-lg) !important;
|
||||
}
|
||||
|
||||
/* Scrollbar */
|
||||
::-webkit-scrollbar {
|
||||
width: 6px;
|
||||
height: 6px;
|
||||
}
|
||||
::-webkit-scrollbar-track {
|
||||
background: transparent;
|
||||
}
|
||||
::-webkit-scrollbar-thumb {
|
||||
background: #CBD5E1;
|
||||
border-radius: 3px;
|
||||
}
|
||||
::-webkit-scrollbar-thumb:hover {
|
||||
background: #94A3B8;
|
||||
}
|
||||
|
||||
/* Skeleton loading */
|
||||
.skeleton {
|
||||
background: linear-gradient(90deg, #F1F5F9 25%, #E2E8F0 50%, #F1F5F9 75%);
|
||||
background-size: 200% 100%;
|
||||
animation: shimmer 1.5s ease-in-out infinite;
|
||||
border-radius: var(--radius-sm);
|
||||
}
|
||||
|
||||
@keyframes shimmer {
|
||||
0% { background-position: 200% 0; }
|
||||
100% { background-position: -200% 0; }
|
||||
}
|
||||
|
||||
/* Animations */
|
||||
@keyframes fadeInUp {
|
||||
from { opacity: 0; transform: translateY(20px); }
|
||||
to { opacity: 1; transform: translateY(0); }
|
||||
}
|
||||
@keyframes fadeIn {
|
||||
from { opacity: 0; }
|
||||
to { opacity: 1; }
|
||||
}
|
||||
@keyframes slideInLeft {
|
||||
from { opacity: 0; transform: translateX(-20px); }
|
||||
to { opacity: 1; transform: translateX(0); }
|
||||
}
|
||||
@keyframes float {
|
||||
0%, 100% { transform: translateY(0px); }
|
||||
50% { transform: translateY(-20px); }
|
||||
}
|
||||
@keyframes floatSlow {
|
||||
0%, 100% { transform: translateY(0px) rotate(0deg); }
|
||||
50% { transform: translateY(-15px) rotate(3deg); }
|
||||
}
|
||||
@keyframes pulse {
|
||||
0%, 100% { opacity: 0.6; }
|
||||
50% { opacity: 1; }
|
||||
}
|
||||
@keyframes bounce {
|
||||
0%, 80%, 100% { transform: scale(0); }
|
||||
40% { transform: scale(1); }
|
||||
}
|
||||
@keyframes spin {
|
||||
to { transform: rotate(360deg); }
|
||||
}
|
||||
|
||||
/* Utility classes */
|
||||
.fade-in-up {
|
||||
animation: fadeInUp 0.5s ease both;
|
||||
}
|
||||
|
||||
/* Selection */
|
||||
::selection {
|
||||
background: var(--primary-bg);
|
||||
color: var(--primary);
|
||||
}
|
||||
Reference in New Issue
Block a user