前端配置调整

This commit is contained in:
zhonghua 2026-03-26 14:02:08 +08:00
parent de264d3298
commit a8931c8708
11 changed files with 280 additions and 301 deletions

3
.gitignore vendored
View File

@ -42,6 +42,7 @@ build/
# === 前端自动生成 === # === 前端自动生成 ===
**/components.d.ts **/components.d.ts
**/typed-router.d.ts **/typed-router.d.ts
**/pnpm-lock.yaml
*.log *.log
npm-debug.log* npm-debug.log*
yarn-debug.log* yarn-debug.log*
@ -57,8 +58,6 @@ target/
# === 测试结果 === # === 测试结果 ===
screenshots/ screenshots/
*.png
*.webm
test-results/ test-results/
playwright-report/ playwright-report/

View File

@ -4,7 +4,7 @@
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<!-- <link rel="icon" type="image/svg+xml" href="/vite.svg" /> --> <!-- <link rel="icon" type="image/svg+xml" href="/vite.svg" /> -->
<link rel="icon" href="/logo/logo.png" /> <link rel="icon" href="/logo/logo/logo.png" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>少儿智慧阅读</title> <title>少儿智慧阅读</title>
<!-- 阿里云IMM --> <!-- 阿里云IMM -->

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

View File

@ -1,13 +1,8 @@
<template> <template>
<a-layout :class="['admin-layout', { 'is-collapsed': collapsed }]"> <a-layout :class="['admin-layout', { 'is-collapsed': collapsed }]">
<a-layout-sider <a-layout-sider v-model:collapsed="collapsed" :trigger="null" collapsible class="admin-sider">
v-model:collapsed="collapsed"
:trigger="null"
collapsible
class="admin-sider"
>
<div class="logo"> <div class="logo">
<img src="/logo.png" alt="Logo" class="logo-img" /> <img src="/logo/logo.png" alt="Logo" class="logo-img" />
<div v-if="!collapsed" class="logo-text"> <div v-if="!collapsed" class="logo-text">
<span class="logo-title">少儿智慧阅读</span> <span class="logo-title">少儿智慧阅读</span>
<span class="logo-subtitle">服务管理后台</span> <span class="logo-subtitle">服务管理后台</span>
@ -15,79 +10,65 @@
</div> </div>
<div class="sider-menu-wrapper"> <div class="sider-menu-wrapper">
<a-menu <a-menu v-model:selectedKeys="selectedKeys" mode="inline" theme="light" :inline-collapsed="collapsed"
v-model:selectedKeys="selectedKeys" @select="handleMenuSelect" class="side-menu">
mode="inline" <a-menu-item key="dashboard">
theme="light" <template #icon>
:inline-collapsed="collapsed" <LayoutDashboard :size="18" :stroke-width="1.5" />
@select="handleMenuSelect" </template>
class="side-menu" <span>数据看板</span>
> </a-menu-item>
<a-menu-item key="dashboard">
<template #icon>
<LayoutDashboard :size="18" :stroke-width="1.5" />
</template>
<span>数据看板</span>
</a-menu-item>
<a-menu-item key="packages"> <a-menu-item key="packages">
<template #icon> <template #icon>
<DatabaseOutlined :size="18" :stroke-width="1.5" /> <DatabaseOutlined :size="18" :stroke-width="1.5" />
</template> </template>
<span>课程包管理</span> <span>课程包管理</span>
</a-menu-item> </a-menu-item>
<a-menu-item key="collections"> <a-menu-item key="collections">
<template #icon> <template #icon>
<Gift :size="18" :stroke-width="1.5" /> <Gift :size="18" :stroke-width="1.5" />
</template> </template>
<span>套餐管理</span> <span>套餐管理</span>
</a-menu-item> </a-menu-item>
<a-menu-item key="themes"> <a-menu-item key="themes">
<template #icon> <template #icon>
<FormatPainterOutlined :size="18" :stroke-width="1.5" /> <FormatPainterOutlined :size="18" :stroke-width="1.5" />
</template> </template>
<span>主题字典</span> <span>主题字典</span>
</a-menu-item> </a-menu-item>
<a-menu-item key="tenants"> <a-menu-item key="tenants">
<template #icon> <template #icon>
<Building2 :size="18" :stroke-width="1.5" /> <Building2 :size="18" :stroke-width="1.5" />
</template> </template>
<span>租户管理</span> <span>租户管理</span>
</a-menu-item> </a-menu-item>
<a-menu-item key="resources"> <a-menu-item key="resources">
<template #icon> <template #icon>
<FolderOpen :size="18" :stroke-width="1.5" /> <FolderOpen :size="18" :stroke-width="1.5" />
</template> </template>
<span>资源库</span> <span>资源库</span>
</a-menu-item> </a-menu-item>
<a-menu-item key="settings"> <a-menu-item key="settings">
<template #icon> <template #icon>
<Settings :size="18" :stroke-width="1.5" /> <Settings :size="18" :stroke-width="1.5" />
</template> </template>
<span>系统设置</span> <span>系统设置</span>
</a-menu-item> </a-menu-item>
</a-menu> </a-menu>
</div> </div>
</a-layout-sider> </a-layout-sider>
<a-layout> <a-layout>
<a-layout-header class="admin-header"> <a-layout-header class="admin-header">
<div class="header-left"> <div class="header-left">
<MenuUnfoldOutlined <MenuUnfoldOutlined v-if="collapsed" class="trigger" @click="collapsed = !collapsed" />
v-if="collapsed" <MenuFoldOutlined v-else class="trigger" @click="collapsed = !collapsed" />
class="trigger"
@click="collapsed = !collapsed"
/>
<MenuFoldOutlined
v-else
class="trigger"
@click="collapsed = !collapsed"
/>
</div> </div>
<div class="header-right"> <div class="header-right">
@ -95,7 +76,9 @@
<a-dropdown> <a-dropdown>
<a-space class="user-info" style="cursor: pointer;"> <a-space class="user-info" style="cursor: pointer;">
<a-avatar :size="32" class="user-avatar"> <a-avatar :size="32" class="user-avatar">
<template #icon><UserOutlined /></template> <template #icon>
<UserOutlined />
</template>
</a-avatar> </a-avatar>
<span class="user-name">{{ userStore.user?.name }}</span> <span class="user-name">{{ userStore.user?.name }}</span>
<DownOutlined /> <DownOutlined />
@ -208,10 +191,10 @@ const handleUserMenuClick = ({ key }: { key: string | number }) => {
<style scoped lang="scss"> <style scoped lang="scss">
// //
$primary-color: #6366F1; // - $primary-color: #6366F1; // -
$primary-light: #EEF2FF; $primary-light: #EEF2FF;
$primary-dark: #4F46E5; $primary-dark: #4F46E5;
$accent-color: #10B981; // 绿 $accent-color: #10B981; // 绿
$text-color: #1F2937; $text-color: #1F2937;
$text-secondary: #6B7280; $text-secondary: #6B7280;
$border-color: #E5E7EB; $border-color: #E5E7EB;

View File

@ -11,7 +11,7 @@
<div class="login-card"> <div class="login-card">
<!-- Logo区域 --> <!-- Logo区域 -->
<div class="logo-section"> <div class="logo-section">
<img src="/logo.png" alt="Logo" class="logo-img" /> <img src="/logo/logo.png" alt="Logo" class="logo-img" />
<div class="brand-info"> <div class="brand-info">
<h1>少儿智慧阅读</h1> <h1>少儿智慧阅读</h1>
<p>读启智慧阅见未来</p> <p>读启智慧阅见未来</p>
@ -20,54 +20,33 @@
<!-- 角色选择 --> <!-- 角色选择 -->
<div class="role-section"> <div class="role-section">
<div <div v-for="role in roles" :key="role.value" :class="['role-btn', { active: formState.role === role.value }]"
v-for="role in roles" @click="selectRole(role.value)">
:key="role.value"
:class="['role-btn', { active: formState.role === role.value }]"
@click="selectRole(role.value)"
>
<component :is="role.icon" /> <component :is="role.icon" />
<span>{{ role.label }}</span> <span>{{ role.label }}</span>
</div> </div>
</div> </div>
<!-- 登录表单 --> <!-- 登录表单 -->
<a-form <a-form :model="formState" @finish="handleLogin" layout="vertical" class="login-form">
:model="formState"
@finish="handleLogin"
layout="vertical"
class="login-form"
>
<a-form-item name="account" :rules="[{ required: true, message: '请输入账号' }]"> <a-form-item name="account" :rules="[{ required: true, message: '请输入账号' }]">
<a-input <a-input v-model:value="formState.account" placeholder="请输入账号" size="large" allow-clear>
v-model:value="formState.account" <template #prefix>
placeholder="请输入账号" <UserOutlined />
size="large" </template>
allow-clear
>
<template #prefix><UserOutlined /></template>
</a-input> </a-input>
</a-form-item> </a-form-item>
<a-form-item name="password" :rules="[{ required: true, message: '请输入密码' }]"> <a-form-item name="password" :rules="[{ required: true, message: '请输入密码' }]">
<a-input-password <a-input-password v-model:value="formState.password" placeholder="请输入密码" size="large">
v-model:value="formState.password" <template #prefix>
placeholder="请输入密码" <LockOutlined />
size="large" </template>
>
<template #prefix><LockOutlined /></template>
</a-input-password> </a-input-password>
</a-form-item> </a-form-item>
<a-form-item> <a-form-item>
<a-button <a-button type="primary" html-type="submit" size="large" block :loading="loading" class="login-btn">
type="primary"
html-type="submit"
size="large"
block
:loading="loading"
class="login-btn"
>
登录 登录
</a-button> </a-button>
</a-form-item> </a-form-item>
@ -77,12 +56,7 @@
<div class="test-section"> <div class="test-section">
<div class="test-title">快速体验</div> <div class="test-title">快速体验</div>
<div class="test-list"> <div class="test-list">
<span <span v-for="acc in testAccounts" :key="acc.role" class="test-item" @click="fillAccount(acc)">
v-for="acc in testAccounts"
:key="acc.role"
class="test-item"
@click="fillAccount(acc)"
>
{{ acc.label }}: {{ acc.account }} {{ acc.label }}: {{ acc.account }}
</span> </span>
</div> </div>
@ -177,12 +151,12 @@ const handleQuickTest = async () => {
<style scoped lang="scss"> <style scoped lang="scss">
// //
$primary: #FF8C42; // $primary: #FF8C42; //
$primary-light: #FFF4EB; $primary-light: #FFF4EB;
$secondary: #6C5CE7; // $secondary: #6C5CE7; //
$accent: #00D9A5; // 绿 $accent: #00D9A5; // 绿
$coral: #FF7675; // $coral: #FF7675; //
$sky: #74B9FF; // $sky: #74B9FF; //
$text-dark: #2D3436; $text-dark: #2D3436;
$text-gray: #636E72; $text-gray: #636E72;
$text-light: #B2BEC3; $text-light: #B2BEC3;

View File

@ -4,7 +4,7 @@
<a-layout-sider v-if="!isMobile" v-model:collapsed="collapsed" :trigger="null" collapsible class="parent-sider" <a-layout-sider v-if="!isMobile" v-model:collapsed="collapsed" :trigger="null" collapsible class="parent-sider"
:width="220"> :width="220">
<div class="logo"> <div class="logo">
<img src="/logo.png" alt="Logo" class="logo-img" /> <img src="/logo/logo.png" alt="Logo" class="logo-img" />
<div v-if="!collapsed" class="logo-text"> <div v-if="!collapsed" class="logo-text">
<span class="logo-title">少儿智慧阅读</span> <span class="logo-title">少儿智慧阅读</span>
<span class="logo-subtitle">家长端</span> <span class="logo-subtitle">家长端</span>
@ -53,7 +53,7 @@
class="mobile-drawer"> class="mobile-drawer">
<template #title> <template #title>
<div class="drawer-header"> <div class="drawer-header">
<img src="/logo.png" alt="Logo" class="drawer-logo" /> <img src="/logo/logo.png" alt="Logo" class="drawer-logo" />
<div class="drawer-title"> <div class="drawer-title">
<span class="title-main">少儿智慧阅读</span> <span class="title-main">少儿智慧阅读</span>
<span class="title-sub">家长端</span> <span class="title-sub">家长端</span>

View File

@ -1,13 +1,8 @@
<template> <template>
<a-layout :class="['school-layout', { 'is-collapsed': collapsed }]"> <a-layout :class="['school-layout', { 'is-collapsed': collapsed }]">
<a-layout-sider <a-layout-sider v-model:collapsed="collapsed" :trigger="null" collapsible class="school-sider">
v-model:collapsed="collapsed"
:trigger="null"
collapsible
class="school-sider"
>
<div class="logo"> <div class="logo">
<img src="/logo.png" alt="Logo" class="logo-img" /> <img src="/logo/logo.png" alt="Logo" class="logo-img" />
<div v-if="!collapsed" class="logo-text"> <div v-if="!collapsed" class="logo-text">
<span class="logo-tenant">{{ tenantName }}</span> <span class="logo-tenant">{{ tenantName }}</span>
<span class="logo-title">少儿智慧阅读</span> <span class="logo-title">少儿智慧阅读</span>
@ -16,121 +11,146 @@
</div> </div>
<div class="sider-menu-wrapper"> <div class="sider-menu-wrapper">
<a-menu <a-menu v-model:selectedKeys="selectedKeys" v-model:openKeys="openKeys" mode="inline" theme="light"
v-model:selectedKeys="selectedKeys" :inline-collapsed="collapsed" @click="handleMenuClick" class="side-menu">
v-model:openKeys="openKeys" <!-- 数据概览 - 独立一级菜单 -->
mode="inline" <a-menu-item key="dashboard">
theme="light" <template #icon>
:inline-collapsed="collapsed" <DashboardOutlined />
@click="handleMenuClick" </template>
class="side-menu" <span>数据概览</span>
> </a-menu-item>
<!-- 数据概览 - 独立一级菜单 -->
<a-menu-item key="dashboard">
<template #icon><DashboardOutlined /></template>
<span>数据概览</span>
</a-menu-item>
<!-- 人员管理 --> <!-- 人员管理 -->
<a-sub-menu key="staff"> <a-sub-menu key="staff">
<template #icon><TeamOutlined /></template> <template #icon>
<template #title>人员管理</template> <TeamOutlined />
<a-menu-item key="teachers"> </template>
<template #icon><SolutionOutlined /></template> <template #title>人员管理</template>
<span>教师管理</span> <a-menu-item key="teachers">
</a-menu-item> <template #icon>
<a-menu-item key="students"> <SolutionOutlined />
<template #icon><UserOutlined /></template> </template>
<span>学生管理</span> <span>教师管理</span>
</a-menu-item> </a-menu-item>
<a-menu-item key="parents"> <a-menu-item key="students">
<template #icon><IdcardOutlined /></template> <template #icon>
<span>家长管理</span> <UserOutlined />
</a-menu-item> </template>
<a-menu-item key="classes"> <span>学生管理</span>
<template #icon><HomeOutlined /></template> </a-menu-item>
<span>班级管理</span> <a-menu-item key="parents">
</a-menu-item> <template #icon>
</a-sub-menu> <IdcardOutlined />
</template>
<span>家长管理</span>
</a-menu-item>
<a-menu-item key="classes">
<template #icon>
<HomeOutlined />
</template>
<span>班级管理</span>
</a-menu-item>
</a-sub-menu>
<!-- 教学管理 --> <!-- 教学管理 -->
<a-sub-menu key="teaching"> <a-sub-menu key="teaching">
<template #icon><BookOutlined /></template> <template #icon>
<template #title>教学管理</template> <BookOutlined />
<a-menu-item key="courses"> </template>
<template #icon><ReadOutlined /></template> <template #title>教学管理</template>
<span>课程中心</span> <a-menu-item key="courses">
</a-menu-item> <template #icon>
<a-menu-item key="school-courses"> <ReadOutlined />
<template #icon><FolderAddOutlined /></template> </template>
<span>校本课程包</span> <span>课程中心</span>
</a-menu-item> </a-menu-item>
<a-menu-item key="schedule"> <a-menu-item key="school-courses">
<template #icon><CalendarOutlined /></template> <template #icon>
<span>课程排期</span> <FolderAddOutlined />
</a-menu-item> </template>
<a-menu-item key="tasks"> <span>校本课程包</span>
<template #icon><CheckSquareOutlined /></template> </a-menu-item>
<span>阅读任务</span> <a-menu-item key="schedule">
</a-menu-item> <template #icon>
<a-menu-item key="task-templates"> <CalendarOutlined />
<template #icon><CopyOutlined /></template> </template>
<span>任务模板</span> <span>课程排期</span>
</a-menu-item> </a-menu-item>
<a-menu-item key="feedback"> <a-menu-item key="tasks">
<template #icon><MessageOutlined /></template> <template #icon>
<span>课程反馈</span> <CheckSquareOutlined />
</a-menu-item> </template>
</a-sub-menu> <span>阅读任务</span>
</a-menu-item>
<a-menu-item key="task-templates">
<template #icon>
<CopyOutlined />
</template>
<span>任务模板</span>
</a-menu-item>
<a-menu-item key="feedback">
<template #icon>
<MessageOutlined />
</template>
<span>课程反馈</span>
</a-menu-item>
</a-sub-menu>
<!-- 数据中心 --> <!-- 数据中心 -->
<a-sub-menu key="data"> <a-sub-menu key="data">
<template #icon><BarChartOutlined /></template> <template #icon>
<template #title>数据中心</template> <BarChartOutlined />
<a-menu-item key="reports"> </template>
<template #icon><FileTextOutlined /></template> <template #title>数据中心</template>
<span>数据报告</span> <a-menu-item key="reports">
</a-menu-item> <template #icon>
<a-menu-item key="growth"> <FileTextOutlined />
<template #icon><FileImageOutlined /></template> </template>
<span>成长档案</span> <span>数据报告</span>
</a-menu-item> </a-menu-item>
</a-sub-menu> <a-menu-item key="growth">
<template #icon>
<FileImageOutlined />
</template>
<span>成长档案</span>
</a-menu-item>
</a-sub-menu>
<!-- 系统管理 --> <!-- 系统管理 -->
<a-sub-menu key="system"> <a-sub-menu key="system">
<template #icon><SettingOutlined /></template> <template #icon>
<template #title>系统管理</template> <SettingOutlined />
<a-menu-item key="packages"> </template>
<template #icon><GiftOutlined /></template> <template #title>系统管理</template>
<span>套餐管理</span> <a-menu-item key="packages">
</a-menu-item> <template #icon>
<a-menu-item key="operation-logs"> <GiftOutlined />
<template #icon><HistoryOutlined /></template> </template>
<span>操作日志</span> <span>套餐管理</span>
</a-menu-item> </a-menu-item>
<a-menu-item key="settings"> <a-menu-item key="operation-logs">
<template #icon><ToolOutlined /></template> <template #icon>
<span>系统设置</span> <HistoryOutlined />
</a-menu-item> </template>
</a-sub-menu> <span>操作日志</span>
</a-menu> </a-menu-item>
<a-menu-item key="settings">
<template #icon>
<ToolOutlined />
</template>
<span>系统设置</span>
</a-menu-item>
</a-sub-menu>
</a-menu>
</div> </div>
</a-layout-sider> </a-layout-sider>
<a-layout> <a-layout>
<a-layout-header class="school-header"> <a-layout-header class="school-header">
<div class="header-left"> <div class="header-left">
<MenuUnfoldOutlined <MenuUnfoldOutlined v-if="collapsed" class="trigger" @click="collapsed = !collapsed" />
v-if="collapsed" <MenuFoldOutlined v-else class="trigger" @click="collapsed = !collapsed" />
class="trigger"
@click="collapsed = !collapsed"
/>
<MenuFoldOutlined
v-else
class="trigger"
@click="collapsed = !collapsed"
/>
</div> </div>
<div class="header-right"> <div class="header-right">
@ -138,7 +158,9 @@
<a-dropdown> <a-dropdown>
<a-space class="user-info" style="cursor: pointer;"> <a-space class="user-info" style="cursor: pointer;">
<a-avatar :size="32" class="user-avatar"> <a-avatar :size="32" class="user-avatar">
<template #icon><UserOutlined /></template> <template #icon>
<UserOutlined />
</template>
</a-avatar> </a-avatar>
<span class="user-name">{{ userName }}</span> <span class="user-name">{{ userName }}</span>
<DownOutlined /> <DownOutlined />
@ -277,10 +299,10 @@ const handleUserMenuClick = ({ key }: { key: string | number }) => {
<style scoped lang="scss"> <style scoped lang="scss">
// //
$primary-color: #FF8C42; // $primary-color: #FF8C42; //
$primary-light: #FFF4EC; $primary-light: #FFF4EC;
$primary-dark: #E67635; $primary-dark: #E67635;
$accent-color: #4CAF50; // 绿 $accent-color: #4CAF50; // 绿
$text-color: #333333; $text-color: #333333;
$text-secondary: #666666; $text-secondary: #666666;
$border-color: #E8E8E8; $border-color: #E8E8E8;

View File

@ -1,13 +1,8 @@
<template> <template>
<a-layout :class="['teacher-layout', { 'is-collapsed': collapsed }]"> <a-layout :class="['teacher-layout', { 'is-collapsed': collapsed }]">
<a-layout-sider <a-layout-sider v-model:collapsed="collapsed" :trigger="null" collapsible class="teacher-sider">
v-model:collapsed="collapsed"
:trigger="null"
collapsible
class="teacher-sider"
>
<div class="logo"> <div class="logo">
<img src="/logo.png" alt="Logo" class="logo-img" /> <img src="/logo/logo.png" alt="Logo" class="logo-img" />
<div v-if="!collapsed" class="logo-text"> <div v-if="!collapsed" class="logo-text">
<span class="logo-tenant">{{ tenantName }}</span> <span class="logo-tenant">{{ tenantName }}</span>
<span class="logo-title">少儿智慧阅读</span> <span class="logo-title">少儿智慧阅读</span>
@ -16,67 +11,71 @@
</div> </div>
<div class="sider-menu-wrapper"> <div class="sider-menu-wrapper">
<a-menu <a-menu v-model:selectedKeys="selectedKeys" mode="inline" theme="light" :inline-collapsed="collapsed"
v-model:selectedKeys="selectedKeys" @click="handleMenuClick" class="side-menu">
mode="inline" <a-menu-item key="dashboard">
theme="light" <template #icon>
:inline-collapsed="collapsed" <HomeOutlined />
@click="handleMenuClick" </template>
class="side-menu" <span>首页</span>
> </a-menu-item>
<a-menu-item key="dashboard"> <a-menu-item key="classes">
<template #icon><HomeOutlined /></template> <template #icon>
<span>首页</span> <TeamOutlined />
</a-menu-item> </template>
<a-menu-item key="classes"> <span>我的班级</span>
<template #icon><TeamOutlined /></template> </a-menu-item>
<span>我的班级</span> <a-menu-item key="courses">
</a-menu-item> <template #icon>
<a-menu-item key="courses"> <BookOutlined />
<template #icon><BookOutlined /></template> </template>
<span>课程中心</span> <span>课程中心</span>
</a-menu-item> </a-menu-item>
<a-menu-item key="school-courses"> <a-menu-item key="school-courses">
<template #icon><FolderAddOutlined /></template> <template #icon>
<span>校本课程包</span> <FolderAddOutlined />
</a-menu-item> </template>
<a-menu-item key="lessons"> <span>校本课程包</span>
<template #icon><CalendarOutlined /></template> </a-menu-item>
<span>上课记录</span> <a-menu-item key="lessons">
</a-menu-item> <template #icon>
<a-menu-item key="schedule"> <CalendarOutlined />
<template #icon><ScheduleOutlined /></template> </template>
<span>我的课表</span> <span>上课记录</span>
</a-menu-item> </a-menu-item>
<a-menu-item key="tasks"> <a-menu-item key="schedule">
<template #icon><CheckSquareOutlined /></template> <template #icon>
<span>阅读任务</span> <ScheduleOutlined />
</a-menu-item> </template>
<a-menu-item key="feedback"> <span>我的课表</span>
<template #icon><FileTextOutlined /></template> </a-menu-item>
<span>课程反馈</span> <a-menu-item key="tasks">
</a-menu-item> <template #icon>
<a-menu-item key="growth"> <CheckSquareOutlined />
<template #icon><CameraOutlined /></template> </template>
<span>成长档案</span> <span>阅读任务</span>
</a-menu-item> </a-menu-item>
</a-menu> <a-menu-item key="feedback">
<template #icon>
<FileTextOutlined />
</template>
<span>课程反馈</span>
</a-menu-item>
<a-menu-item key="growth">
<template #icon>
<CameraOutlined />
</template>
<span>成长档案</span>
</a-menu-item>
</a-menu>
</div> </div>
</a-layout-sider> </a-layout-sider>
<a-layout> <a-layout>
<a-layout-header class="teacher-header"> <a-layout-header class="teacher-header">
<div class="header-left"> <div class="header-left">
<MenuUnfoldOutlined <MenuUnfoldOutlined v-if="collapsed" class="trigger" @click="collapsed = !collapsed" />
v-if="collapsed" <MenuFoldOutlined v-else class="trigger" @click="collapsed = !collapsed" />
class="trigger"
@click="collapsed = !collapsed"
/>
<MenuFoldOutlined
v-else
class="trigger"
@click="collapsed = !collapsed"
/>
</div> </div>
<div class="header-right"> <div class="header-right">
@ -84,7 +83,9 @@
<a-dropdown> <a-dropdown>
<a-space class="user-info" style="cursor: pointer;"> <a-space class="user-info" style="cursor: pointer;">
<a-avatar :size="32" class="user-avatar"> <a-avatar :size="32" class="user-avatar">
<template #icon><UserOutlined /></template> <template #icon>
<UserOutlined />
</template>
</a-avatar> </a-avatar>
<span class="user-name">{{ userName }}</span> <span class="user-name">{{ userName }}</span>
<DownOutlined /> <DownOutlined />
@ -194,10 +195,10 @@ const handleUserMenuClick = ({ key }: { key: string | number }) => {
<style scoped lang="scss"> <style scoped lang="scss">
// //
$primary-color: #FF8C42; // $primary-color: #FF8C42; //
$primary-light: #FFF4EC; $primary-light: #FFF4EC;
$primary-dark: #E67635; $primary-dark: #E67635;
$accent-color: #4CAF50; // 绿 $accent-color: #4CAF50; // 绿
$text-color: #333333; $text-color: #333333;
$text-secondary: #666666; $text-secondary: #666666;
$border-color: #E8E8E8; $border-color: #E8E8E8;